1

重複の可能性:
浮動小数点の比較

#include<stdio.h>
#include<conio.h>
int main()
{
float i=0.7;
clrscr();
if(i < 0.7)
     printf("If Block");
else
     printf("Else Block");
getch();
return 0;
}

出力が「Ifブロック」になる理由がわかりません.....if部分が実行される理由を教えてください。

4

1 に答える 1

13

実際iには0.69999999998、フローティング表現になっています。

i=0.7メモリに割り当てると、0.7double precisionは思ったように表現できません。

したがって、との比較は型の昇格floatdoubleつながり、その場合は2倍i未満になり0.7ます。

于 2012-11-27T18:19:40.603 に答える