ホームページ  >  記事  >  バックエンド開発  >  PHP での不正確な浮動小数点演算の解決策

PHP での不正確な浮動小数点演算の解決策

墨辰丷
墨辰丷オリジナル
2018-05-31 10:07:301566ブラウズ

この記事では主に PHP での不正確な浮動小数点演算の解決策を紹介します。興味のある方はぜひ参考にしてください。

最近作っていますか?加算と減算の問題は、浮動小数点演算が不正確であることです。インタープリタ型言語には浮動小数点演算に関する問題があることは事実のようです。

まずコードを見てください:

<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);

出力される値は実際にはブール値 false です

これはなぜですか?PHP マニュアルには浮動小数点数に関する次の警告メッセージがあります:

警告

浮動小数点精度

0.1 や 0.7 などの一見単純な小数は、精度を少し損なうことなく内部バイナリ形式に変換することはできません。これは、混乱を招く結果につながる可能性があります。たとえば、floor((0.1+0.7)*10) は、結果の内部表現が 7.9999999999... のようなものであるため、通常、期待される 8 ではなく 7 を返します。

これは、有限の桁数で特定の小数を正確に表現することが不可能であるという事実に関連しています。たとえば、10 進数の 1/3 は 0.3333333 になります。

したがって、浮動小数点数の結果が最後の桁まで正確であるとは決して信じないでください。また、2 つの浮動小数点数が等しいかどうかを比較しないでください。本当に高い精度が必要な場合は、任意精度の数学関数または gmp 関数を使用する必要があります

次に、上記の計算を

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。


関連する推奨事項:

PHPはSQLステートメント整形機能を実装します

phpモノモーフィックデザインパターンを実装するメソッド

PHPのTP5リクエストリクエストオブジェクトのメソッド

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

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