Erreur de calcul en php
Résolu
hpmousse
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Doctor C Messages postés 630 Date d'inscription Statut Membre Dernière intervention -
Doctor C Messages postés 630 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis tombé sur cette erreur de calcul par PHP :
[code]<?php
$a = 0.7;
$b = 7;
$c = $a * $b;
$d = 4.9;
print $d - $c;
?>[/code]
et le résultat (qui devrait être 0 pour ceux qui n'auraient pas suivi)
8.881784197E-16
étonnant non ?
Quelqu'un pourrait-il m'expliquer cela ?
Je suis tombé sur cette erreur de calcul par PHP :
[code]<?php
$a = 0.7;
$b = 7;
$c = $a * $b;
$d = 4.9;
print $d - $c;
?>[/code]
et le résultat (qui devrait être 0 pour ceux qui n'auraient pas suivi)
8.881784197E-16
étonnant non ?
Quelqu'un pourrait-il m'expliquer cela ?
3 réponses
-
Des nombres à virgules comme 0,1 et 0,7 n'ont pas une représentation exacte dans le langage de l'ordinateur, i. e. en base 2 (même s'ils sont tout beau et tout rond en base 10).
Tout cela veut dire qu'en fait, ta variable $c est plutôt le résultat de quelque chose comme:
$c = 0.699999999999999999... * 7;
$c = 4,899999999999999999...
$d = 4.9
0.00000000000000008881784197 = $d - $c
= 8.881784197E-16
Echo "Lima Mike Alfa"; -
merci Doctor C
Je me doutais bien d'un truc comme ça.
Comment écrit-t'on les décimales en base 2 ?
comme 0.7 -
Des décimales en binaire, c'est pas super simple.
J'ai pas trop envie de tenter de l'expliquer (surtout que je n'y comprend pas tous les détails).
Voici l'explication de wikipedia: https://fr.wikipedia.org/wiki/IEEE_754