为什么浮点比较有时会起作用,而另一些时候却不起作用?

时间:2019-11-29 17:49:26

标签: c floating-point comparison

运行此命令时,第一个比较检出为true,但第二个没有检出。我很困惑,因为我认为在第一次比较检查为true之后,“ a-= 0.05”将意味着a现在为0.01,而“ a> = 0.01”将为true。我删除了a -= 0.05;,然后删除了代码按预期运行。我在浮点比较中阅读了与此类似的问题,并了解了浮点不精确性,因此我在表达式中用a放置常量旁边的“ f”,但这没用。我也将a的数据类型更改为double,但是那也不起作用。这是一个简单的语法错误,还是另一个浮点不精确性问题?我是新手,如果这是一个愚蠢的问题,我感到抱歉。

#include <stdio.h>

int main(void)
{
float a = 0.06;
if(a >= 0.05)
{
    printf("First comparison true\n");
    a -= 0.05;
}
if(a >= 0.01)
{
    printf("Second comparison true\n");
}
}

输出:第一次比较正确

0 个答案:

没有答案