ホームページ > バックエンド開発 > PHPチュートリアル > PHP の浮動小数点計算で予期しない結果が生じることがあるのはなぜですか?

PHP の浮動小数点計算で予期しない結果が生じることがあるのはなぜですか?

Susan Sarandon
リリース: 2025-01-01 13:03:11
オリジナル
527 人が閲覧しました

Why Do PHP Floating-Point Calculations Sometimes Produce Unexpected Results?

PHP 浮動小数点精度の問題と解決策

この記事では、浮動小数点計算で予期しない結果が生じる可能性がある PHP の一般的な問題について説明します。浮動小数点演算の不正確さ。

の場合例:

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

この操作の結果は、予期された 0.01 ではなく、0.009999999999998 です。

なぜこれが起こるのですか?

Floating-点演算は実数の近似です算数。浮動小数点数は有限精度のバイナリ形式で格納されるため、表現できる数値の数が制限されます。これは、特に非常に大きな数値または非常に小さな数値を含む操作を実行する場合に不正確になる可能性があります。

この問題を解決するにはどうすればよいですか?

回避策はいくつかあります。この制限:

  • 結果の四捨五入: round() 関数を使用して、結果を指定された小数点以下の桁数に丸めます。たとえば、round($a $b, 2) は 0.01 を返します。
  • 整数の使用: 通貨の操作など、特定の計算では、代わりに整数を使用した方が正確な場合があります。浮動小数点数の。たとえば、$35.00 を 3500 として保存し、$34.99 を 3499 として保存し、整数除算を実行して結果を計算できます。

補足:

  • PHP は他のものとは異なり、10 進データ型を提供しません。
  • 正確な計算と予期しない結果を回避するには、浮動小数点演算の制限を理解することが重要です。

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

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