倍精度: 拡張精度について理解する
倍精度データ型を扱う場合、近似精度には限界があることが一般に理解されています。小数点以下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 サイトの他の関連記事を参照してください。