C での浮動小数点比較を理解する
C で浮動小数点値を比較するときは、浮動小数点値の潜在的な不正確さに注意することが重要です。精度が限られています。提供されているコード スニペットでは、浮動小数点 a および b を定数 0.7 および 0.5 とそれぞれ比較すると、予期しない出力「1 が正しい」が観察されます。
予期しない出力の原因:
この問題は次の理由で発生します。理由:
解決策:
期待される出力を取得するには、次のいずれかを実行できます:
期待される出力を含むコード:
int main() { double a = 0.7; double b = 0.5; if (a < 0.7) { if (b < 0.5) printf("2 are right"); else printf("1 is right"); } else printf("0 are right"); }
この修正されたコードでは、a と b の比較は次のようになります。それぞれの double により正確な精度が保証され、「0 は正しい」という期待される出力が得られます。
以上がC で float を比較すると予期しない結果が生じる場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。