我的C代码有什么问题?它是CodeBlock 16.01中的编译器错误吗?

时间:2016-06-19 08:10:35

标签: c while-loop codeblocks

我正在使用编译器附带的Code :: 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=%f\n",x);
        x=x+h;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您有浮点精度问题。由于1.2无法以二进制形式精确表示,因此存在精度损失。如果您将1.2更改为更大的代码,那么您的代码应该可以使用,比方说1.201

一般情况下,请尽量避免浮点比较中的=