¿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?
javascript
math
rounding
Sten Van den Bergh
fuente
fuente
Respuestas:
EDITAR 2 :
Use el método
Number
del objetotoFixed
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)
ejemplo de jsFiddle
fuente
3.1415
convierte3.00
en tu ejemplo.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,555Math.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);
fuente
Esto funcionó para mí:
var new_number = float.toFixed(2);
Ejemplo:
var my_float = 0.6666 my_float.toFixed(3) # => 0.667
fuente
0.6666.toFixed(3)
convierte en0.666
lugar de0.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))
fuente
Esto no es realmente compatible con la CPU, pero:
Math.round(number*100)/100
funciona como se esperaba.
fuente
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 comotoFixed(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.
fuente
utilice el siguiente código.
alert(+(Math.round(number + "e+2") + "e-2"));
fuente
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; }
fuente