php 浮動小数点計算の比較と丸めの不正確な解決策、不正確な丸め
php は多くのプログラミング言語で見られるべき興味深い現象です。これは、コンピューター自体の浮動小数点数の認識に問題があるためです...
[php] プレーンコピーを表示
-
$f = 0.58;
var_dump(
intval(- $f * 100 *100)); //結果 5799
var_dump((float)(
$f * 100 *100)); - //結果 5800
echo (int)((0.1+0.7)*10); - //結果 7
echo (float)((0.1+0.7)*10); - //結果 8
[php]
プレーンコピーを表示
$a = 0.1;
$b = 0.7;
var_dump(($a +
$b) == 0.8);
//出力される値は実際にはブール値 false です
[php] プレーンコピーを表示
$a = 0.1;
$b = 0.7;
var_dump(bcadd(
$a,- $b,2) == 0.8);
// bool true
-
-
浮動小数点数を計算するときは、浮動小数点数を整数に変換しないように注意してください。変換しないと、予測不可能なエラーが発生します。
したがって、浮動小数点数の結果が最後の桁まで正確であるとは決して信じないでください。また、2 つの浮動小数点数が等しいかどうかを比較しないでください。
http://www.bkjia.com/PHPjc/1040163.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/1040163.html技術記事
PHP の浮動小数点計算の比較と不正確な丸めの解決策 不正確な丸めは、多くのプログラミング言語で見られる興味深い現象です。これはコンピューター自体が原因です...