我將兩個數字字符串$ a和$ b加在一起,然後將結果與另一個數字字符串$ c進行比較。所有這三個數字都存儲爲字符串,並在比較步驟中通過PHP轉換爲浮點數。在PHP中奇怪的加入數字字符串
出於某些原因,測試$ a + $ b == $ c不會評估爲true,即使它應該。
您可以重新使用這個腳本的問題:
<?php
$a = "-111.11";
$b = "-22.22";
$c = "-133.33";
echo '$a is '.$a."\n";
echo '$b is '.$b."\n";
echo '$c is '.$c."\n";
echo '$a + $b is '.($a+$b). "\n";
if ($a + $b == $c) {
echo 'a + b equals c'."\n";
} else {
echo 'a + b does not equal c'."\n";
}
?>
古怪,如果我改變的值略有使得$ A = -111.11,$ B = -22.23和$ C = -133.34它按預期工作。
我是否缺少明顯的東西,或者這是PHP的錯誤?
http://php.net/manual/en/language.types.float.php – Shad
浮動有限的精度。一旦你引入第一個浮點數,你就會失去準確性。因此比較無效。 – mario
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – Corbin