int main()
{
float lfResult = 19.893196;
if(lfResult == 19.893196)
printf("Works");
else
printf("does not work");
getch();
return 0;
}
输出:不起作用
为什么if
条件失败?
答案 0 :(得分:8)
在C浮动常量中,类型为double
。尝试:
float lfResult = 19.893196f;
if(lfResult == 19.893196f)
^
因此,常量19.893196
的精度高于lfResult
。
6.4.4.2 - 4
未固定的浮动常量具有类型double 。如果完全由 字母f或F,它有float类型。如果由字母l或L表示,则为 有类型长双。
答案 1 :(得分:1)
你的文字是双重的,可以在任务中自由浮动。试试:
if(lfResult == 19.893196F)
...
答案 2 :(得分:0)
如果条件允许,可以将19.893196视为双倍。所以if条件失败了。
您应该尝试以下方式。
if(lfResult == 19.893196f)
我认为这会对你有所帮助。