Maison >interface Web >js tutoriel >Analyse et solution du problème de précision des opérations en virgule flottante Javascript_Compétences Javascript
Analyse
JavaScript n'a qu'un seul type de nombre, Number , et tous les nombres en Javascript sont représentés au format standard IEEE-754. Le problème de précision des nombres à virgule flottante n'est pas spécifique à JavaScript, car certaines décimales ont des chiffres infinis lorsqu'elles sont représentées en binaire :
Système décimal 0,0100 1100 1100 1100 ...
0,4 0,0110 0110 0110 0110 ...
0,5 0,1
0,6 0,1001 1001 1001 1001 ...
Par exemple, 1.1, le programme ne peut pas réellement représenter « 1.1 », mais ne peut atteindre qu'un certain degré de précision. Il s'agit d'une perte de précision inévitable :
Le problème est plus compliqué en JavaScript. Voici quelques données de test dans Chrome :
Entrée
1.0-0.9 == 0.1 Faux
1.0-0.8 == 0.2 Faux1.0-0.7 == 0.3 Faux
1.0-0.6 == 0.4 Vrai
1.0- 0.5 == 0,5 Vrai
1,0-0,4 == 0,6 Vrai
1,0-0,3 == 0,7 Vrai
1,0-0,2 == 0,8 Vrai
1,0-0,1 == 0,9 Vrai
Solution
digits = digits == undefined 10: digits; 10
return this.toFixed(digits) === number.toFixed(digits);>
(1.0-0.7).isEqual(0.3); // renvoie vrai