2008-10-06 20 views

Respuesta

10

0.002 no se puede representar con precisión como un número de base 2. Similar a la forma en que 1/3 no se puede representar en la base 10.

1/3 = 0.33333 ... recuring. Para representar el número con precisión en la base 10, necesitaría un número infinito de dígitos decimales.

0.002 es un número que se puede representar con precisión en la base 10 (como vemos aquí), pero no en la base 2, tal como lo usan las computadoras. Para representar este número con precisión, tomaría una cantidad infinita de dígitos binarios.

1

Si desea una solución rápida puede redondear a la milésima

Math.round ((1,001 + 0,001) * 1000)/1000

23

La clase Javascript Number tiene una función toFixed() eso te dará lo que quieres.

Así que podría hacer parseFloat ("1.0019999") a Fijo (3) y eso le daría "1.002".

El parámetro (3 en este caso) es el número de dígitos a mostrar después del punto decimal

+0

Gracias, 17 de 26. No sabía acerca de la función toFixed(). – pmg

+0

El método toFixed() devuelve una representación de cadena (en lugar de número) de un número en notación de punto fijo. Por lo tanto, debemos tener cuidado al tratar con el método Fixed(). – pramodc84

4

Los métodos javascript Number.toFixed() y Number.toPrecision() puede ayudar aquí, pero they return a String. Una posible solución es la siguiente:

var x = parseFloat(parseFloat("1.0019999999").toPrecision(3));