Erreur de calcul en php

Résolu
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 ?

3 réponses

  1. 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";
    1. 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