Porque 1.200+0.001 imprime 1.2009999999999998

  • Autor Autor jerber
  • Fecha de inicio Fecha de inicio
J

jerber

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola, porque javascript con esto:
<script>
a=1.200+0.001;
alert(a);
</script>
Arroja esto:
1.2009999999999998
Como puedo solucionarlo?
Gracias
 
usa toFixed(3)... 3 son la cantidad de decimales...
PHP:
a.toFixed(3)
 
Los sistemas binarios que utilizan las computadoras no pueden representar decimales con total exactitud. Hay numeros que son imposibles de representar porque tienen un numero ilimitado de decimales y la computadora no puede usar una cantidad ilimitada de memoria.
Al usar alert sobre el numero decimal le estas pidiendo a la computadora que "muestre" el numero tal y como ella lo conoce. Usando modificadores como el sugerido por cicklow la computadora ya no ve un numero, sino un string. Por eso puede mostrar un "numero" que si realmente fuera un numero no podria ni considerar
Ese es el porque. La solucion ya la tienes
 
Cuando trabajes con numeros en Javascript debes tener un poco de cuidado, ese resultado que te dio digamos que es un
problema que tiene el sistema actual para representar este tipo de numeros.

por ejemplo:

Si comparas 1.200+0.001 === 1.201 segun ese resultado seria False.


Puedes usar toPrecision(1) es muy similar a toFixed() la diferencia es que aqui especificas la cifra significativa del numero. 😛7:
 
Atrás
Arriba