ホームページ  >  記事  >  バックエンド開発  >  PHP の浮動小数点精度に関する警告

PHP の浮動小数点精度に関する警告

WBOY
WBOYオリジナル
2016-06-13 13:06:42903ブラウズ

PHP の浮動小数点精度に関する警告

これは、PHP ドキュメントに示されているプロンプトです:


0.10.7 のような単純な 10 進数は、精度を少し損なうことなく内部バイナリ形式に変換できません。

floor(( 0.1 + 0.7 ) * 10) ? 8 の代わりに 7 を返します。

(int)(( 0.1 + 0.7 ) * 10) ?8 の代わりに 7 を返します。

?

この現象の説明は、「結果の内部表現が実際には

7.9 に似ているため」です。

?

結論は次のとおりです:

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

未知の小数部分を Int にキャストしないでください。

?

(int)round( 0.1 + 0.7 ) * 10) これは安全だと思われます。

多数の乗算と除算がある場合、または中間値が浮動小数点型である場合でも、数値の精度を高めるために BC 数学関数が使用されます。

?

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