int main()
{
float lfResult = 19.893196;
if(lfResult == 19.893196)
printf("Works");
else
printf("does not work");
getch();
return 0;
}
输出:不起作用
为什么if
条件失败?
int main()
{
float lfResult = 19.893196;
if(lfResult == 19.893196)
printf("Works");
else
printf("does not work");
getch();
return 0;
}
输出:不起作用
为什么if
条件失败?
在 C 中,浮动常量的类型为double
. 尝试:
float lfResult = 19.893196f;
if(lfResult == 19.893196f)
^
因此常数19.893196
比 具有更高的精度lfResult
。
6.4.4.2 - 4
无后缀的浮点常量具有 double 类型。如果以字母 f 或 F 为后缀,则它的类型为 float。如果以字母 l 或 L 为后缀,则它的类型为 long double。
你的文字是双精度的,在赋值中被转换为浮点数。
尝试:
if(lfResult == 19.893196F)
...
在 if 条件下,19.893196 可以作为 double。所以 if 条件失败。
您应该尝试以下方式。
if(lfResult == 19.893196f)
我想这会对你有所帮助。