2010-09-15 4 views
4

Je reçois des valeurs inattendues pour les calculs variables:PHP maths bizarre

$var1 = $var2 * (((1 + $var3)^$var4)^$var5); 

J'ai vérifié que $var2 est 3, $var3 est de 0,1, $var4 est 1, $var5 est donc 1.1,

$var1 = 3*(((1+0.1)^1)^1.1) = 3.3316 mais en PHP, $var1 = 3

si je change $var4-2,

$var1 = 3*(((1+0.1)^1)^1.1) = 3.6999 mais en PHP, $var1 = 6

Pourquoi est-ce? Des idées? J'ai essayé de déclarer explicitement toutes les variables comme des flottants.

Répondre

13

Notez que ^ n'est pas "puissance de". Vous pouvez jeter un oeil à the pow function.

(^ est en fait "bitwise exclusive or".)

+2

''^est l'opérateur XOR au niveau du bit: http://php.net/manual/en/language.operators.bitwise.php – deceze

+8

Allez, assez avec le vote à la hausse. Ce n'est pas une science de fusée. ;) – aioobe

+3

cela attrape beaucoup de nouveaux venus à PHP (et même quelques personnes plus expérimentées de temps en temps). – Spudley