PHP 浮動小数点計算の比較と丸めの不正確な解決策

WBOY
リリース: 2016-06-23 13:29:49
オリジナル
1135 人が閲覧しました

PHP における興味深い現象は、多くのプログラミング言語でも見られるはずです。これは、コンピュータ自身の浮動小数点数の認識の問題によるものです...

[php] view plain copy

  1. $f = 0.58;
  2. var_dump(intval($f * 100 *100)) //結果 5799
  3. var_dump((float)($f * 100 *100)) //結果 5800
  4. echo (int)((0.1+0.7)*10); 7
  5. echo (float)((0.1+0.7)*10); //結果 8

[php] プレーンコピーを表示

  1. $ a = 0.1;
  2. $b = 0.7;
  3. var_dump(($a + $b) == 0.8);
  4. // 出力される値は実際にはブール値です

[php ] viewプレーンコピー

    $a = 0.1;
  1. $b = 0.7;
  2. var_dump(bcadd($a,$b,2) == 0.8);// bool true

浮動小数点数を計算するときは、浮動小数点数を整数に変換しないように注意してください。そうしないと、予期しないエラーが発生します。

したがって、浮動小数点数の結果が最後の桁まで正確であるとは決して信じないでください。また、2 つの浮動小数点数が等しいかどうかを決して比較しないでください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート