tengo esto:¿Eliminar dígitos después de dos puntos decimales, no el número redondo en javascript?
i=4.568;
document.write(i.toFixed(2));
de salida:
4.57
Pero yo no quiero redondear el último número a 7, ¿qué puedo hacer?
tengo esto:¿Eliminar dígitos después de dos puntos decimales, no el número redondo en javascript?
i=4.568;
document.write(i.toFixed(2));
de salida:
4.57
Pero yo no quiero redondear el último número a 7, ¿qué puedo hacer?
Usa matemáticas simples en su lugar;
document.write(Math.floor(i * 100)/100);
Puede pegarlo en su propia función para su reutilización;
function myToFixed(i, digits) {
var pow = Math.pow(10, digits);
return Math.floor(i * pow)/pow;
}
document.write(myToFixed(i, 2));
La función no devuelve nada ..! –
debe ser: document.write (Math.floor (i * 100)/100); –
Un enfoque ligeramente complicado:
var i=4.568,
iToString = i + '';
i = parseFloat(iToString.match(/\d+\.\d{2}/));
console.log(i);
Esto toma efectivamente la variable i
y la convierte en una cadena, y luego utiliza una expresión regular para que coincida con los números antes del punto decimal y los dos que siguen a ese punto decimal, usando parseFloat()
para luego convertirlo a un número.
Referencias:
acaba de cortar la cadena más larga:
i.toFixed(3).replace(/\.(\d\d)\d?$/, '.$1')
gracias por la publicación SLaks – ranjenanil
aFixed es una solución más corta que hace su trabajo. – Mayhem
Cuando se trabaja con punto flotante binario, este tipo de cosas pueden suceder. – Pointy
@Pointy: No; él simplemente no quiere redondear. – SLaks
Sí, pero mi punto es que, en general, cuando se trata de coma flotante no se puede garantizar que una constante que escriba terminará siendo lo que cree que es, redondeando o no redondeando, principalmente porque 2 y 5 son relativamente primos: -) – Pointy