ホームページ >バックエンド開発 >C++ >倍精度演算で小数点以下 15 桁を超える精度が表示されることがあるのはなぜですか?

倍精度演算で小数点以下 15 桁を超える精度が表示されることがあるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-30 19:49:14659ブラウズ

Why Does Double-Precision Arithmetic Sometimes Show More Than 15 Decimal Places of Precision?

倍精度: 拡張精度について理解する

倍精度データ型を扱う場合、近似精度には限界があることが一般に理解されています。小数点以下15桁まで。ただし、1.0/7.0 などの特定のタイプの数値は、内部的に double として格納されると、小数点以下 17 桁の精度で表示されることがあります。

この異常は、IEEE double データ表現の固有の設計に起因します。倍精度値には 53 の有効ビットがあり、10 進数で約 15.95 桁の精度が得られます。ただし、C ライブラリはこの値を 15 に切り捨て、理論上の精度は小数点以下 15 桁になります。実際には、この丸めにより、DBL_DIG の値は 16 ではなく 15 に設定されます。

この拡張された精度の重要性は、nextafter() 関数を使用してさらに詳しく説明されます。この関数は、指定された値に最も近い表現可能な数値を計算します。この関数を使用して 1.0/7.0 の値を調べると、最後の桁が異なる 3 つの連続した値 (0.14285714285714282、0.14285714285714285、および 0.14285714285714288) が出力に表示されます。

最後に表示された桁の正確な値が決定されます。コンパイラによって実行される丸め演算によって。この場合、桁はステップごとに 3 ずつ変化し、精度が 10 進数で約 16 桁であることを示します。したがって、double の理論上の精度は小数点以下 15 桁ですが、ほぼ 16 桁の拡張精度により、特定の種類の計算ではより高い精度が得られます。

以上が倍精度演算で小数点以下 15 桁を超える精度が表示されることがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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