Foros del Web » Programando para Internet » Javascript »

Porque 1.200+0.001 imprime 1.2009999999999998

Estas en el tema de Porque 1.200+0.001 imprime 1.2009999999999998 en el foro de Javascript en Foros del Web. Hola, porque javascript con esto: <script> a=1.200+0.001; alert(a); </script> Arroja esto: 1.2009999999999998 Como puedo solucionarlo? Gracias...
  #1 (permalink)  
Antiguo 30/01/2018, 19:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 36
Antigüedad: 9 años, 6 meses
Puntos: 0
Porque 1.200+0.001 imprime 1.2009999999999998

Hola, porque javascript con esto:
<script>
a=1.200+0.001;
alert(a);
</script>
Arroja esto:
1.2009999999999998
Como puedo solucionarlo?
Gracias
  #2 (permalink)  
Antiguo 30/01/2018, 21:55
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.413
Antigüedad: 6 años, 10 meses
Puntos: 926
Respuesta: Porque 1.200+0.001 imprime 1.2009999999999998

Antes de indicarte la forma de solucionar tu problema, es necesario conocer la causa que lo origina:

Cita:
Iniciado por puntoflotante.org
¿Por qué al sumar mis números, como 0.1 + 0.2, en vez de dar 0.3 da un resultado extraño como 0.30000000000000004?

Porque, internamente, los ordenadores usan un formato (punto flotante binario) que no puede representar de forma precisa números como 0.1, 0.2 o 0.3 de ninguna manera.

Cuando el código es compilado o interpretado, tu “0.1” se redondea al número más cercano en ese formato, lo que resulta en un pequeño error de redondeo incluso antes de que se haga la operación.
Fuente: puntoflotante.org/basic

Ahora, bien. Puedes realizar un redondeo con métodos como Math.round() (revisa la última parte en donde se indican formas de redondeo decimal), así como el método .toFixed() con el cual puedes establecer el número de cifras que se mostrarán en la parte decimal.

__________________
«Laissez faire et laissez passer, le monde va de lui même»

Etiquetas: imprime, java
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.