C中的浮点比较

阿努加格
#include<stdio.h>
int main()
{
    float x = 0.6;
    if (x == 0.6)
        printf("IF");
    else if (x == 0.6f)
        printf("ELSE IF");
    else
        printf("ELSE");
}

此代码给出了输出ELSE IF

#include<stdio.h>
int main()
{
    float x = 0.5;
    if (x == 0.5)
        printf("IF");
    else if (x == 0.5f)
        printf("ELSE IF");
    else
        printf("ELSE");
}

这段代码给出了输出IF

即使两个程序看起来都一样,但是为什么输出会有所不同呢?为什么会这样呢?

因为0.5在IEEE-754二进制格式(例如binary32和binary64)中具有精确的表示形式。0.5是两个的负数。0.6另一方面不是2的幂,不能用float精确表示double

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

外壳中的浮点比较

来自分类Dev

shell中的浮点比较

来自分类Dev

比较 C 函数中的三个浮点数

来自分类Dev

比较SQL,PHP中的浮点数

来自分类Dev

比较D中的浮点数

来自分类Dev

如何比较catch2中的浮点

来自分类Dev

比较MySQL中的浮点数?

来自分类Dev

如何比较 django 模板中的浮点变量?

来自分类Dev

比较向量中的浮点数

来自分类Dev

C编程比较浮点数

来自分类Dev

浮点比较C ++-查找最大值

来自分类Dev

在C中显示浮点

来自分类Dev

C中的浮点异常

来自分类Dev

C#中的某些内容可以在运行时更改浮点比较行为吗?[x64]

来自分类Dev

C#中的某些内容可以在运行时更改浮点比较行为吗?[x64]

来自分类Dev

计算C中的浮点的epsilon

来自分类Dev

计算C中的浮点范围

来自分类Dev

C#中的浮点溢出

来自分类Dev

Matlab中浮点比较的最佳实践是什么?

来自分类Dev

浮点比较<和> =生成的汇编中的苛刻差异

来自分类Dev

无法比较awk中的两个浮点变量?

来自分类Dev

如何与Shell脚本中的浮点数进行比较

来自分类Dev

以给定的精度比较FASM中的80位浮点

来自分类Dev

熊猫数据框中的浮点和整数比较

来自分类Dev

如何与Shell脚本中的浮点数进行比较

来自分类Dev

numpy中浮点值的分量明智比较返回错误结果

来自分类Dev

使用Gtest在零附近失败的C ++浮点比较

来自分类Dev

C-整数0与浮点数0.000000的比较

来自分类Dev

C#-比较2浮点运算是否昂贵?