par
Hywan » 24 oct. 2008, 00:35
Hey

,
La première : 9,99 est égal à 9,99, normal.
La seconde : 9,99 est égal à 10 - 0,01, soit 9,99, normal (sachant que 10 est équivalent à 10,0 en PHP).
La troisième: 9,99 est égal à 9 + 0,99, normal (raisonnement analogue à précédemment).
La quatrième : 9,99 ne vaut pas 19,90 - 9,91, soit 9,99 … Bizarre

, voici mes tests :
Code : Tout sélectionner
$ php -a
Interactive mode enabled
<?php
var_dump(9.99 == (19.90 - 9.91));
bool(false)
var_dump(19.90 - 9.91);
float(9.99)
var_dump(9.99);
float(9.99)
$a = 9.99;
$b = 19.90 - 9.91;
var_dump($a == $b);
bool(false)
var_dump($a, $b);
float(9.99)
float(9.99) J'avoue ne pas comprendre. J'ai re-testé avec 9,99 == (10,0 - 0,01), c'est vrai, mais pas avec cette opération, vraiment bizarre

…
Le dernier exemple (selon arthur) est correct, normal.
Donc, seul l'exemple trois est incorrect et je ne me l'explique. Intéressant. Quelqu'un a une idée ?
Au passage : testé avec PHP 5.2.6.
Hey :),
La première : 9,99 est égal à 9,99, normal.
La seconde : 9,99 est égal à 10 - 0,01, soit 9,99, normal (sachant que 10 est équivalent à 10,0 en PHP).
La troisième: 9,99 est égal à 9 + 0,99, normal (raisonnement analogue à précédemment).
La quatrième : 9,99 ne vaut pas 19,90 - 9,91, soit 9,99 … Bizarre :-k, voici mes tests : [code]$ php -a
Interactive mode enabled
<?php
var_dump(9.99 == (19.90 - 9.91));
bool(false)
var_dump(19.90 - 9.91);
float(9.99)
var_dump(9.99);
float(9.99)
$a = 9.99;
$b = 19.90 - 9.91;
var_dump($a == $b);
bool(false)
var_dump($a, $b);
float(9.99)
float(9.99)[/code] J'avoue ne pas comprendre. J'ai re-testé avec 9,99 == (10,0 - 0,01), c'est vrai, mais pas avec cette opération, vraiment bizarre :-k …
Le dernier exemple (selon arthur) est correct, normal.
Donc, seul l'exemple trois est incorrect et je ne me l'explique. Intéressant. Quelqu'un a une idée ?
Au passage : testé avec PHP 5.2.6.