¿No tengo ni idea de cómo hacer esto? Estoy agregando números de coma, el resultado es, por supuesto, siempre un número con demasiados dígitos después de la coma. ¿nadie?
¿No tengo ni idea de cómo hacer esto? Estoy agregando números de coma, el resultado es, por supuesto, siempre un número con demasiados dígitos después de la coma. ¿nadie?
Respuestas:
EDITAR 2 :
Use el método Number
del objeto toFixed
como este:
var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)
Redondea 42.0054321 a 42.01
Redondea 0,005 a 0,01
Redondea de -0,005 a -0,01 (por lo que el valor absoluto aumenta al redondear en el borde de 0,5)
ACTUALIZACIÓN: tenga en cuenta que en el momento en que la respuesta se escribió inicialmente en 2010, la función de abajo toFixed () funcionaba de forma ligeramente diferente. toFixed () parece hacer algo de redondeo ahora, pero no de una manera estrictamente matemática. Así que ten cuidado con eso. Haga sus pruebas ... El método descrito a continuación hará bien el redondeo, como esperaría un matemático.
toFixed()
- El método convierte un número en una cadena, manteniendo un número específico de decimales. En realidad, no redondea un número hacia arriba, sino que lo trunca.Math.round(n)
- redondea un número al entero más cercano. Girando así:0,5 -> 1; 0,05 -> 0
así que si desea redondear, diga el número 0.55555, solo al segundo lugar decimal; puede hacer lo siguiente (este es un concepto paso a paso):
0.55555 * 100
= 55,555 Math.Round(55.555)
-> 56.00056.000 / 100
= 0,56000 (0.56000).toFixed(2)
-> 0,56y este es el código:
(Math.round(number * 100)/100).toFixed(2);
Esto funcionó para mí:
var new_number = float.toFixed(2);
Ejemplo:
var my_float = 0.6666
my_float.toFixed(3) # => 0.667
0.6666.toFixed(3)
convierte en 0.666
lugar de 0.667
. @Andrei parece tener la solución adecuada para redondear correctamente.
toFixed()
funciona perfectamente: 0.6666.toFixed(3) # => 0.667
. Lo agregaré a tu respuesta.
Las respuestas anteriores olvidaron volver a escribir la salida como un Número. Hay varias formas de hacerlo, según sus gustos.
+my_float.toFixed(2)
Number(my_float.toFixed(2))
parseFloat(my_float.toFixed(2))
Aunque tenemos muchas respuestas aquí con muchas sugerencias útiles, cada una de ellas todavía omite algunos pasos.
Así que aquí hay una solución completa envuelta en una pequeña función:
function roundToTwoDigitsAfterComma(floatNumber) {
return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}
En caso de que esté interesado en cómo funciona esto:
toFixed(2)
para mantener 2 dígitos después de la coma y arroje otra parte inútilparseFloat()
función como
toFixed(2)
cadena de retorno en su lugarNota: Si mantiene los 2 últimos dígitos después de la coma debido a que trabaja con valores monetarios y hace cálculos financieros, tenga en cuenta que no es una buena idea y que será mejor que utilice valores enteros.
utilice el siguiente código.
alert(+(Math.round(number + "e+2") + "e-2"));
Yo uso esto:
function round(value, precision) {
if(precision == 0)
return Math.round(value);
exp = 1;
for(i=0;i<precision;i++)
exp *= 10;
return Math.round(value*exp)/exp;
}