sirve que parselong parsedecimal para number isnan decimales javascript floating-point parsefloat

javascript - que - parsefloat tofixed



FunciĆ³n ParseFloat en JavaScript (5)

Cuando agrego dos valores de cuadro de texto que son 1.001 y 0.001 y luego realizo un parseFloat obtengo 1.0019999999. Lo quiero 1.002. ¿Me puedes ayudar?


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, como lo usan las computadoras. Para representar este número con precisión, tomaría una cantidad infinita de dígitos binarios.


Este es un problema conocido: ver el problema de precisión y la minimización del problema de precisión: minimización


Si quiere una solución rápida puede redondear a la milésima más cercana

Math.round ((1.001 + 0.001) * 1000) / 1000


Los métodos javascript Number.toFixed() y Number.toPrecision() pueden ayudar aquí, pero devuelven un String . Una posible solución es la siguiente:

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


La clase Javascript Number tiene una función toFixed () que le proporcionará lo que desea.

Entonces, podrías hacer parseFloat ("1.0019999") a Fijo (3) y eso te daría "1.002".

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