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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-17 00:58:25757ブラウズ

Why Does PHP Floating-Point Addition Produce Unexpected Results?

PHP 浮動小数点数の精度: 予期しない結果が生じる理由

PHP による浮動小数点数の処理により、驚くべき結果が生じる可能性があります。次の点を考慮してください:

$a = '35';
$b = '-34.99';
echo ($a + $b);

予想される 0.01 ではなく、出力は 0.009999999999998 です。この特殊性は、浮動小数点演算と実数演算の根本的な違いに由来します。

浮動小数点数は、その名前が示すように、有限精度の 2 進数表記を使用して数値を表します。結果として、この方法を使用してすべての数値を正確に表すことは不可能です。これにより、上記のような不正確さや予期せぬ事態が生じる可能性があります。

この問題に対処するには、次のことを検討できます。

  • 結果に対してround($result, 2)を使用して、小数点以下第 2 位に四捨五入します。
  • 整数を使用します。通貨を扱う場合は、$35.00 を 3500 として保存し、$34.99 を 3499 として保存し、結果を 100 で割ります。

残念ながら、PHP には、他の多くの言語と同様、専用の 10 進データ型がありません。これにより、財務計算や科学計算を行う際の精度が損なわれる可能性があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。