2016-10-08 5 views
1

私は本当に知りたいです、なぜ次のコードが常に7を返すのですか?私は本当に混乱しています。これらの式は常に7を返すのはなぜですか?

$a = (double) ((0.1 + 0.6) * 10); //Output: 7 
$b = (int) ((0.1 + 0.6) * 10); //Output: 7 
$c = (int) ((0.1 + 0.7) * 10); //Output: 7 

出力テスト:

echo ($a == $b && $a == $c); //Output: true 
+0

参照http://stackoverflow.com/questions/3726721/php-floating-number-precision – jeroen

答えて

4
$a = (double) ((0.1 + 0.6) * 10); //Output: 7 
$b = (int) ((0.1 + 0.6) * 10); //Output: 7 
$c = (int) ((0.1 + 0.7) * 10); //Output: 7 

理論的(0.1 + 0.7) * 10部分はスクリプトで発現の

7ない8に出力PHPので7に評価評価すべきエンジンは式の値を内部で7.999999として7の代わりに保存します。

そして、小数値が整数に変換されると、PHPエンジンは小数部を切り捨てます。

+0

ありがとうございました!私は、何度か読んだ後にそれを理解したと思います... –

関連する問題