**
Problema de pérdida de precisión de js (y proceso de razonamiento para principiantes)
**
(1) Pregunta: ¿Por qué java y js calculan 0,1+0,2=0,30000000000000004?
En primer lugar debemos entender que todos los números almacenados en la computadora son binarios, es decir, solo hay dos números 01 en la computadora .
La comprensión más superficial: convertir decimal 0.1 a binario: 0.000110011001100110011001100110011... bucle infinito.
Del mismo modo: convertir decimal 0.2 a binario: 0.00110011001100110011001100110011... bucle infinito.
Entonces: bucle infinito + bucle infinito = bucle infinito, entonces binario Cuando convertir números decimales , hay un error y en JavaScript El número es un número de coma flotante de doble precisión de 64 bits que utiliza el estándar IEEE 754. Tiene dígitos y no puede repetirse infinitamente.
(2) Pero encontré un problema...
0,4 (decimal) = 0,0110011001100110…(binario)
0,5 (decimal) = 0,1 (binario) ¿
No debería ser: un bucle infinito de números + un número finito = un bucle infinito de números? Lógicamente hablando, 0,5+0,4 no debería ser igual a 0,9, sino algo como esto 0,900000000003
(3) Verificar los hechos
// Convierte 0.1 y 0.2 a binario antes de realizar la operación
0.0001100110011001100110011001100110011001100110011001101 +
0.00110011001100110011001100110011001100110 0 110011001101 =
0,010011001100110011001100110011001100110011001100110011
// Convertido a decimal, es exactamente 0,30000000000000004
Y 0,5+0,4: 0,01100110011001100110011001100110011001100110011001101+0,1=0,1110011001100110011001100110011001100110011001100 1 101
// Convertido a decimal, es exactamente 0,9,
eso es todo