为什么 dpes 这段代码打印“False”?为什么它不打印“True”?

-1 c floating-point precision

当我运行此代码时,它会打印False. 我不清楚

#include <stdio.h>
    int main()
    {
        float f = 0.1;
        if (f == 0.1)
            printf("True");
        else
            printf("False");
    }
Run Code Online (Sandbox Code Playgroud)

我希望这段代码打印出来True而不是False

Eri*_*hil 5

0.1是一个double常数。在 中float f = 0.1;,该double值被隐式转换为float。和类型具有不同的精度floatdouble因此转换会产生较小的舍入误差。因此,float存储在 中的值f不等于double的值0.1

\n

如果在两个地方都显示0.10.1f,则程序将打印 \xe2\x80\x9cTrue\xe2\x80\x9d。

\n