ホームページ  >  記事  >  バックエンド開発  >  Float 変数と Double 変数が等しいかどうかを比較すると、予期しない結果が生じる場合があるのはなぜですか?

Float 変数と Double 変数が等しいかどうかを比較すると、予期しない結果が生じる場合があるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-01 15:39:02270ブラウズ

Why Does Comparing Float and Double Variables for Equality Sometimes Lead to Unexpected Results?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。