c - 设置为 0.1 的 float 将 false 与 0.1 进行比较

标签 c

 int main()   
    {
            float f = 0.1;
            if (f == 0.1)
                printf("True");
            else
                printf("False");
        }

我只是c的初学者。我不明白上述程序的行为。输出为假。为什么??

最佳答案

0.1 是一个 double 文字。

由于 0.1 无法用 float 精确表示,因此设置为 0.1 的 float 与设置为 0.1 的 double 的比较结果为 false。

如果您使用 float 文字,您的比较将按预期进行:0.1f(注意后缀 f:不要与你的变量名):

float foo /*renamed for clarity*/= 0.1;
if (foo == 0.1f){
     /*this will compare true*/

关于c - 设置为 0.1 的 float 将 false 与 0.1 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20855633/

相关文章:

c - 使用 C 中的结构 union

c - SCCS "what"字符串未被编译器优化掉

c - 如何在 typedef struct 中使用 int 数组 (C)

在链接时定义的 C 常量

c - 如何修复 C 中的地址边界错误?

c - C 中的 Endian 转换有符号

c - 结构体数组的初始化

在 Windows 和 Linux 上编译

c - C语言中,如何调用我的函数而不是系统库函数

c - 自指结构