Double 変数と Float 変数の等価性が欺瞞的になる理由
float や double などの浮動小数点データ型は、実数を表すために不可欠です。プログラミング。ただし、予期せぬ結果を避けるためには、そのニュアンスを理解することが重要です。
精度と丸め: いたずら効果
float 変数と double 変数には精度が限られており、情報を失わずに有限の桁数を実現します。この固有の制限により、数値の内部表現が使用可能なスペースに収まるように切り捨てられる丸め誤差が発生します。
具体的な例
数値 1.1 が表現されると考えてみましょう。 float と double の両方として。精度が限られているため、内部的には近似値として表されます。
float f = 1.1; // Internally stored as an approximation double d = 1.1; // Internally stored as an approximation
f と d が等しいかどうかを比較すると、たとえ「同じ」数値を表していても、丸め誤差により異なる内部表現が生じるため、false が返されます。
トラブルを避けるために
誤解を招くことを防ぐため比較する場合は、浮動小数点数に等価演算子 (==) を使用しないことをお勧めします。代わりに、許容範囲のしきい値 (イプシロン) を導入し、数値の差を比較して、それが許容範囲内であるかどうかを判断します。
if (abs(f - d) < epsilon) { // They are considered equal within the tolerance }
float 比較と double 比較の落とし穴を理解することで、予期しない結果を避けることができ、コードの正確性を確保してください。
以上がFloat 変数と Double 変数が等しいかどうかを比較すると、予期しない結果が生じる場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。