<?php
$a = 0.7;
$b = 7;
$c = $a * $b;
$d = 4.9;
print $d - $c;
?>
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 sais pas ce qu'ils fument chez php mais ils faudraient qu'ils arrêtent de jouer à la roulette russe avec les bits ^^Ceci peut porter à confusion : par exemple, floor((0.1+0.7)*10) retournera 7 au lieu de 8 comme cela pourrait se prévoir, car la représentation interne serait quelque chose comme 7.9.
Bref, pour une opération arithmétique, mieux vaut utiliser sa calculatrice ^^* le signe est représenté par un seul bit, le bit de poids fort (celui le plus à gauche)
* l'exposant est codé sur les 8 bits consécutifs au signe
* la mantisse (les bits situés après la virgule) sur les 23 bits restants