int main()
{
float f = 0.1;
if (f == 0.1)
printf("True");
else
printf("False");
}
我只是c的初学者。我不明白上述程序的行为。输出为假。为什么??
最佳答案
0.1
是一个 double
文字。
由于 0.1
无法用 float 精确表示,因此设置为 0.1 的 float
与设置为 0.1 的 double
的比较结果为 false。
如果您使用 float
文字,您的比较将按预期进行:0.1f
(注意后缀 f
:不要与你的变量名):
float foo /*renamed for clarity*/= 0.1;
if (foo == 0.1f){
/*this will compare true*/
关于c - 设置为 0.1 的 float 将 false 与 0.1 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20855633/