浮動小数点数の精度の問題を克服する
多くのプログラマは、浮動小数点数表現の精度制限に対処するという課題に直面しています。機械。この問題は、浮動小数点演算で特定の数値を正確に表現できないことが原因で発生することがよくあります。
ケース スタディ: 浮動小数点数を使用した不正確な計算
浮動小数点数を含む次のシナリオ:
double mw = atof("4.600"); // mw is now 4.5999999999999996 double p = 0.2; double g = 0.2; int h = 1; int columns = (int)((mw - (h * 11 * p)) / ((h * 11 * p) + g)) + 1;
この場合、列の計算は、指定された浮動小数点値に基づいて整数値 2 を生成することを目的としています。ただし、浮動小数点演算の制限により、mw - (h * 11 * p) の結果は正確にゼロではなく、それよりわずかに小さい値 (1.9999999999999996) になります。これにより、列が予期された 2 ではなく 1 になるという不正確な結果が生じます。
精度の制限への対処
このような精度の問題を克服するには、基本的な問題を認識する必要があります。浮動小数点演算の制限を考慮し、適切な戦略を採用します:
以上がプログラミングにおける浮動小数点数の精度の問題に対処するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。