Estoy haciendo un cálculo en script java pero estoy enfrentando un problema debido a la precisión en los números decimales. no puedo publicar el cálculo exacto, pero esto es lo que estoy haciendo lo que conduce a un resultado inesperadoResultado inesperado de Javascript
cuando escribo: alert(100.01-36.01);
// resultado es 64
Pero cuando escribo: alert(100.01-37.01);
// Resultado es 63.00000000000001
y sigue así para 38.01 .... así sucesivamente. ¿Puede ayudarme alguien por qué esto muestra un comportamiento tan inesperado? Estoy atrapado en un cálculo.
Gracias de antemano.
Las máquinas no tienen una precisión infinita, por lo que siempre se debe tener cuidado al comparar valores de punto flotante, 64 es un número especial para una máquina, es una potencia de 2 por lo que puede representarlo bastante bien. –
esto podría ayudarlo http://stackoverflow.com/questions/588004/is-javascripts-math-broken –
Esto se ha pedido al menos un millón de veces en SO, utilice la búsqueda antes de publicar una pregunta. – Niko