bonjour à tous
Je voudrais simplement retourner un nombre à 2 décimales multiplié par un million, dans un format integer (ie pas de 2.9E+06 ou autre), et j'ai des phénomènes plus qu'étranges.
Ce qui est bizarre c'est que ça n'arrive que sur certaines valeurs, par exemple '2.09' : c'est ok avec 1.09 et 3.09, 2.19, 2.091 et 2.089, etc...
J'aurais donc tendance à dire d'utiliser le (int)($cpc*1000*1000) mais j'ai eu d'autres cas où ça ne fonctionnait pas... Est-il donc impossible en php de multiplier un nombre par un million ?? C'est incroyable, ce truc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 $cpc = '2.09'; echo $cpc * 1000000; // retourne la valeur correcte : 2090000 echo "<br/>"; echo (int)($cpc * 1000000); // retourne 2089999 !! echo "<br/>"; echo (int)($cpc * 1000 * 1000); // retourne la valeur correcte. $cpc = '1.2'; echo"<br/>"; echo $cpc * 1000000; // retourne 1.2E+6 echo "<br/>"; echo (int)($cpc * 1000000); // retourne la valeur correcte : 1200000 echo "<br/>"; echo (int)($cpc * 1000 * 1000); // retourne la valeur correcte
J'ai soumis ça en bug à PHP mais on m'a répondu que c'était un problème de précision, ce que j'ai du mal à croire vu le script.
Et j'ai l'impression (98% sûr) que ça n'arrivait pas avant de passer en v5.2 de PHP, je pense qu'en 5.0 ça fonctionnait correctement.
Merci !
Laurent
Partager