考虑以下代码:
float a = 0.7;
if(0.7 > a)
printf("Hi");
else
printf("Hello");
// The output will be: Hi
为什么这里的if语句返回true?但是,如果我用0.7替换a,那么它会返回false吗?0.7如何大于a?而这在0.5或其他情况下不会发生。为什么会发生这种情况?
0.7本身不是浮点值,而是双精度值,由于它们是具有不同精度的不同数据类型,因此值不相同。在这种情况下,你必须明确地告诉0.7是浮动的;f";最后:
float a = 0.7;
if(0.7f > a)
printf("Hi");
else
printf("Hello");
return 0;
或者仅仅改变数据类型"0";a";变量加倍:
double a = 0.7;
if(0.7 > a)
printf("Hi");
else
printf("Hello");
return 0;