我的C代码怎么了?它是CodeBlock 16.01中的编译器错误吗?



我正在使用代码:: block 16.01(当前版本)随附编译器。问题是当我将 XMAX 更改为 1.2 时,结果不会更改。它产生的结果与 xmax = 1.1 相同。我的C代码做错了什么?还是这是编译器问题?这是我的MWE:

#include<stdio.h>
int main()
{
    double xMin=1.0;
    double xMax=1.1;
    double x=xMin;
    double h=0.1;
    while(x <= xMax)
    {
        printf("x=%fn",x);
        x=x+h;
    }
    return 0;
}

您有一个浮点精度问题。由于1.2不能以二进制形式准确表示,因此有精度损失。如果将1.2更改为更大的东西,则您的代码应该有效,例如,1.201

通常,请尝试在浮点点比较中避免=

相关内容

最新更新