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 627 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 ?


A voir également:

3 réponses

Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
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";
0
hpmousse Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
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
0