浮動小数点計算の精度制限への対処
浮動小数点数はコンピューティングで広く使用されていますが、固有の精度制限があります。 。このような問題の 1 つは、すべての実数を正確に表現できないため、計算中に丸め誤差が発生することです。
浮動小数点表現の問題
次のコードを考えてみましょう。特定の値に基づいて列の数を計算するには:
double mw = 4.5999999999999996; // Represented as 4.6 internally double p = 0.2; double g = 0.2; int h = 1; int columns = (int) ((mw - (h * 11 * p)) / ((h * 11 * p) + g)) + 1;
望ましい結果が得られたにもかかわらず2 の場合、プログラムは誤って 1 を出力します。これは、4.6 (4.5999999999999996) の内部浮動小数点表現が計算で丸め誤差を引き起こすためです。
精度の問題への対処
この精度の問題を克服するには、浮動小数点の限界を認識する必要がありますarithmetic:
以上が浮動小数点計算で予期しない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。