私は、次のコードを書いたCプログラミングフロート状態のためのwhileループの異常行動は、
[email protected]:/mnt/d/Codes/LetUsC$ gcc C04Ag.c
[email protected]:/mnt/d/Codes/LetUsC$ ./a.out
Hello!
Bye!
かどうかを確認するには浮動小数点条件を受け入れるかどうか、私はこのコードを書いた:
#include <stdio.h>
int main()
{
float x = 1.1;
printf("%s\n", "Hello!");
while (x >= 1.0)
{
printf("%s\n", "Hey there!");
printf("%f\n", x);
x = x - 0.1;
}
printf("%s\n", "Bye!");
return 0;
}
私は期待どおりの出力を得た。だから、
[email protected]:/mnt/d/Codes/LetUsC$ gcc C04Ag.c
[email protected]:/mnt/d/Codes/LetUsC$ ./a.out
Hello!
Hey there!
1.100000
Hey there!
1.000000
Bye!
、私の質問は、は私が最初のコードに間違って何をやっているのですか?
UPDTATE:このエラーを修正する方法を理解しました。このような 別記while条件:while (x == 1.1f)
@kaylum:ありがとうございます!ちょうど何が間違っているのか分かりました。次のような条件を追加しました: 'while(x == 1.1f)' – aps120797
よく、いいえ。問題は、浮動小数点値を比較して、等しいかどうかを判断することです。浮動小数点数は常に近似値なので、平等チェックは失敗することがよくあります。 – Jasen