Quiero usar Javascript para redondear un número. Como el número es moneda, quiero que se redondee como en estos ejemplos (2 puntos decimales):
- 192.168 => 192.20
- 192.11 => 192.20
- 192.21 => 192.30
- 192.26 => 192.30
- 192.20 => 192.20
¿Cómo lograr esto usando Javascript? La función Javascript incorporada redondeará el número según la lógica estándar (menos y más de 5 para redondear).
javascript
rounding
cyberfly
fuente
fuente
ceil()
te lo daremos193
, así que debemos asegurarnos de que toda la precisión que queremos mantener esté antes del punto decimal. Luego hacemos la operación inversa para restaurar el valor "original".192.19999999999997
, puede solicitarlo.toFixed(1)
anum
Poco tarde, pero puede crear una función de JavaScript reutilizable para este propósito:
Llame a la función como
fuente
El redondeo normal funcionará con un pequeño ajuste:
y si desea mantener un formato de moneda, puede usar el método de Número
.toFixed()
Aunque esto lo convertirá en una cadena =)
fuente
price.toFixed(2)
Muy cerca de la respuesta TheEye , pero cambio una pequeña cosa para que funcione:
fuente
El OP espera dos cosas:
A. redondear a las décimas más altas y
B. mostrar un cero en el lugar de las centésimas (una necesidad típica con moneda).
Cumplir ambos requisitos parecería necesitar un método separado para cada uno de los anteriores. Aquí hay un enfoque que se basa en la respuesta sugerida de suryakiran:
Nota importante: esta solución produce un resultado muy diferente con números negativos y exponenciales.
En aras de la comparación entre esta respuesta y dos que son muy similares, vea los siguientes 2 enfoques. El primero simplemente se redondea a la centésima más cercana de lo habitual, y el segundo simplemente se redondea a la centésima más cercana (más grande).
fuente
ok, esto ha sido respondido, pero pensé que te gustaría ver mi respuesta que llama a la función math.pow () una vez. Supongo que me gusta mantener las cosas SECAS.
De alguna manera lo pone todo junto. Reemplace Math.round () con Math.ceil () para redondear en lugar de redondear, que es lo que quería el OP.
fuente
esta función limita el decimal sin número redondo
fuente
He estado usando la respuesta de @AndrewMarshall durante mucho tiempo, pero encontré algunos casos extremos. Las siguientes pruebas no pasan:
Esto es lo que ahora uso para que el redondeo se comporte correctamente:
Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
fuente
roundUp(37.760000000000005, 4)
debería ser37.7601
yroundUp(5.83333333, 4)
debería ser5.8334
. Estos dos (y el primero) son válidos para el fn que proporcioné.parseInt siempre se redondea soo .....
do parseInt () + 1
fuente