2017-02-11 10 views
1

私はPHPを理解していない:PHPでの単純な計算..私は間違っているのですか?

echo -0.01-0.02-0.16+0.01+0.01+0.17; 

結果2.7755575615629E-17
は正しく0を=!

+0

してください([読み取り、学び、理解] 'http://php.net/manual/en/language.types.float.php – jetblack

+1

でWarning'のセクションを読んでhttps://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)任意の言語のコンピュータ上で浮動小数点値を扱う場合、これはあなたが本当に知る必要があるものです –

+1

http://floating-point-gui.de/ – Philip

答えて

3

E-17は実際にはx 10 ^(-17)を意味します。

10進浮動小数点数の遠端で精密エラーに苦しんでいるコンピュータ、によると、0.00000000000000002775557であるためにあなたの答えを計算している...

あなたは精度の並べ替えを必要としない場合は、あなたは、特定の精度に丸め強制することができます:

echo round(-0.01-0.02-0.16+0.01+0.01+0.17, 8); 
0

あなただけのPHPのround()機能を使用するよりも、答えを切り上げたい場合は、あなたが得た答えはBODMASルールに従って正確な答えです。あなたは答えを得るでしょう。

echo round(-0.01-0.02-0.16+0.01+0.01+0.17, 8); 
+0

あなた、 分割しているのであれば分かります しかし数えたときは? 各操作はラウンドしますか? –

+0

ようこそ...あなたが理解できれば、それを受け入れたものとしてマークし、それを閉じます。 –

関連する問題