Float データ型と Double データ型の違いを理解する
「float」と「double」は、特定のシナリオでは交換可能に見えるかもしれませんが、の精度と信頼性に影響を与える可能性のある、根本的な相違点
精度と精度
その名前が示すように、「double」は「float」の 2 倍の精度を提供します。倍精度では 15 桁の 10 進数が格納されますが、float では 7 桁が格納されます。この精度の違いは、繰り返しの計算を伴う操作や、非常に大きいまたは小さい数値の処理に重大な影響を及ぼします。
例:
float a = 1.f / 81; float b = 0; for (int i = 0; i < 729; ++ i) b += a; printf("%.7g\n", b); // prints 9.000023
この例では、「float」を使用すると、1/81 を合計して 729 になるときに切り捨てエラーが発生します。繰り返し。ただし、「double」:
double a = 1.0 / 81; double b = 0; for (int i = 0; i < 729; ++ i) b += a; printf("%.15g\n", b); // prints 8.99999999999996
を使用すると、double の優れた精度が実証され、より正確な結果が得られます。
範囲と制限
「float」で表現できる最大値は約 3e38 ですが、「double」では最大 3e38 までの値を格納できます。 1.7e308。この違いは、「float」を使用すると、大きな数値の演算を実行するときに「無限大」値が発生する可能性が高くなるということを意味します。
使用上の推奨事項
ほとんどのシナリオでは、倍精度です。精度と範囲が向上するため、float 精度よりも優れています。ただし、次のような単精度で十分な状況もあります。
倍精度であっても、影響を与える固有の丸め誤差により、絶対的な精度が保証されるわけではないことに注意することが重要です。すべての浮動小数点計算。高精度を必要とする重要な演算の場合は、整数型または分数型の使用を検討してください。
追加のヒント:
以上が浮動小数点と倍精度浮動小数点数: 正確な計算のために倍精度を選択する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。