JavaScript a plusieurs conditions décimales à l'opération de multiplication des nombres de points flottants.
En effet, le nombre de points flottants est converti en binaire après l'opération, mais certaines décimales ont une circulation infinie après le codage binaire, ce qui provoque des erreurs dans l'informatique, et il y a des problèmes similaires dans d'autres langues.
La raison pour laquelle l'explication fait référence à Baidu pour savoir:
Par exemple: 1038.1-1000
1038.1 = 10000001110.000110011001100110011001100110011001100 .....
1000 = 1111101000
1038.1 La conversion en binaire est une décimale du cycle infini. comme numéro de chiffre décimal spécifié.
Solution: Sur la base des chiffres décimaux (tels que 4) à conserver, multipliez d'abord (10 ^ 4) lors du calcul du produit, puis divisez le résultat de calcul (10 ^ 4), et enfin prenez le résultat de la valeur du résultat MATH. Roundd.
Copier le code du code comme suit:
var m1 = 2232.00,
pour cent = (10/100),
Total = pour cent * m1;
alerte (total); // 223.2000000000000000002
Total = math.round (total * 10) / 10;
alerte (total); // 223.2