酝垓 发表于 2025-6-4 19:00:10

浮点数与"零值"的比较

目录

[*]浮点数与"零值"

[*]精度损失:
[*]验证浮点数的差值是否存在精度损失
[*]浮点数直接比较验证
[*]如何进行浮点数比较
[*]浮点数与"零值"比较

[*]null



浮点数与"零值"

精度损失:

浮点值与实际值不等,可能偏大可能偏小,都属于精度损失

[*]验证浮点数是否存在精度损失

验证浮点数的差值是否存在精度损失


浮点数直接比较验证


结论: 浮点数在进行比较时,绝对不能使用双等号==来进行比较.浮点数本身有精度损失,进而导致结果可能有细微的差别.
如何进行浮点数比较

1. x - y == 0的条件是 |x - y| < 精度.
即 x - y > -精度 && x - y < 精度

2.还可以使用fabs函数,C90,<math.h>, double fabs(double x); 返回x的绝对值.
即 fabs(x-y) < 精度//--------------------------------------------------------------
//方法1,自定义精度
#include<stdio.h>
#include<math.h>

#define EPSILON 0.0000000000000001 //自定义精度
int main()
{
    double x = 1.0;
    double y = 0.1;

    //验证x - 0.9 是否等于 0.1
    if(fabs((x-0.9)- y) < EPSILON ) printf("aaaa\n");
    else printf("bbbb\n");

    puts("hello world!");
    return 0;
}//方法2:使用C语言提供的精度
#include<stdio.h>
#include<math.h>
#include<float.h>

int main()
{
    double x = 1.0;
    double y = 0.1;

    //验证x - 0.9 是否等于 0.1
    //<float.h> 内置最小精度值 DBL_EPSILON 和 FLT_EPSILON ,1.0+DBL_EPSILON != 1.0 ,EPSILON是改变1.0的最小的值,数学概念,略
    if(fabs((x-0.9)- y) < DBL_EPSILON ) printf("aaaa\n");
    else printf("bbbb\n");
   
    return 0;
}
浮点数与"零值"比较

只需要判定它是否小于EPSILON即可
int main()
{
    double x = 0.0;
    // double x= 0.00000000000000000000000000001; //很小也可以认为等于0
    if(fabs(x) < DBL_EPSILON ) printf("等于0\n");
    else printf("不等于0\n");
   
    return 0;
}


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

敕码 发表于 2025-11-8 18:28:55

这个好,看起来很实用

寂傧 发表于 2025-12-9 16:23:22

感谢分享,学习下。

俏挺喳 发表于 2025-12-11 14:29:57

热心回复!

倘伟 发表于 2026-1-5 10:56:58

谢谢分享,辛苦了

酝垓 发表于 2026-1-15 18:36:08

热心回复!

谲脾 发表于 2026-1-21 13:11:26

过来提前占个楼

莘度 发表于 2026-1-25 02:29:58

感谢分享

丰江 发表于 2026-1-28 08:58:42

谢谢分享,试用一下

蔬陶 发表于 2026-2-5 04:17:07

谢谢分享,辛苦了

印萍 发表于 2026-2-7 23:16:05

yyds。多谢分享

飧沾 发表于 2026-2-8 06:01:15

热心回复!

艾晓梅 发表于 2026-2-8 06:33:14

yyds。多谢分享

村亢 发表于 2026-2-8 08:35:34

前排留名,哈哈哈

笙芝 发表于 2026-2-8 15:18:11

收藏一下   不知道什么时候能用到

寿爹座 发表于 2026-2-8 15:38:41

这个有用。

寇秀娟 发表于 2026-2-9 01:13:47

这个好,看起来很实用

丝甲坞 发表于 2026-2-9 09:49:38

感谢分享,学习下。

聊账 发表于 2026-2-10 10:08:02

分享、互助 让互联网精神温暖你我

昝沛珊 发表于 2026-2-11 06:09:24

东西不错很实用谢谢分享
页: [1] 2
查看完整版本: 浮点数与"零值"的比较