ホームページ > バックエンド開発 > PHPチュートリアル > PHP 浮動小数点計算が不正確になるのはなぜですか?

PHP 浮動小数点計算が不正確になるのはなぜですか?

DDD
リリース: 2024-12-21 14:45:10
オリジナル
559 人が閲覧しました

Why Are My PHP Floating-Point Calculations Inaccurate?

PHP の浮動小数点の不正確さ

PHP で浮動小数点演算を実行すると、予期しない結果が発生しますか?この問題は、コンピュータにおける浮動小数点表現の固有の性質により発生します。

浮動小数点数は精度が限られた 2 進数であり、数学的な期待と実際の結果の間に差異が生じます。これは、実数演算とは異なり、浮動小数点演算では特定の値に対して (a b)-b != a などの不正確さが発生する可能性があることを意味します。

説明するには、次の PHP コードを考えてみましょう。

$a = '35';
$b = '-34.99';
echo ($a + $b);
ログイン後にコピー

出力は 0.009999999999998 ですが、0.01 が期待されます。この偏差は、34.99 と 0.01 の両方を 2 進数で正確に表現できないために発生します。代わりに、近似が使用されます。

この問題を軽減するには、いくつかのアプローチを使用できます。

  • round($result, 2) を使用して結果を丸め、目的の小数点以下の桁数を実現します。
  • 浮動小数点の代わりに整数を使用します。通貨を扱う場合は、値をセント単位で保存し (例: $35.00 を 3500 として)、結果を 100 で割ります。

PHP には 10 進データ型がありませんが、round 関数と整数操作テクニックが効果的な処理の回避策を提供します。浮動小数点の不精度

以上がPHP 浮動小数点計算が不正確になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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