JavaScript tiene múltiples condiciones decimales en la operación de multiplicación de números de punto flotante.
Esto se debe a que el número de punto flotante se convierte en binario después de la operación, pero algunos decimales tienen una circulación infinita después de la codificación binaria, lo que causa errores en la computación, y hay problemas similares en otro idioma.
La razón por la cual la explicación se refiere desde Baidu para saber:
Por ejemplo: 1038.1-1000
1038.1 = 10000001110.000110011001100110011001100110011001100 .....
1000 = 1111101000
1038.1 La conversión en binario es un decimal de ciclo infinito. como un número de dígito decimal especificado.
Solución: Basado en los dígitos decimales (como 4) que se mantendrá, primero multiplique (10^4) Al calcular el producto, luego divida el resultado del cálculo (10^4) y finalmente tome el resultado del valor del resultado Matemáticas. Roundd.
Copiar código del código de la siguiente manera:
var m1 = 2232.00,
porcentaje = (10/100),
Total = porcentaje*m1;
Alerta (total); // 223.2000000000000000002
Total = Math.round (total*10)/10;
alerta (total); // 223.2