Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
重複の可能性: 浮動小数点の比較
#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部分が実行される理由を教えてください。
実際iには0.69999999998、フローティング表現になっています。
i
0.69999999998
i=0.7メモリに割り当てると、0.7double precisionは思ったように表現できません。
i=0.7
double precision
したがって、との比較は型の昇格floatにdoubleつながり、その場合は2倍i未満になり0.7ます。
float
double
0.7