运行此命令时,第一个比较检出为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");
}
}
输出:第一次比较正确