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

问题描述 投票:0回答:1

当我运行这段代码时,它会打印出

False
。我不清楚

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

我希望这段代码打印出

True
而不是
False

c floating-point precision
1个回答
5
投票

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

如果在它出现的两个地方将

0.1
更改为
0.1f
,程序将打印“True”。

© www.soinside.com 2019 - 2024. All rights reserved.