浮点数比较

NOTE: 以下内容取自 胡凡 曾磊《算法笔记》
经过大量计算,3.14可能存储为3.1400000000001,也有可能存储为3.1499999999999,所以导致两个数不相等。于是需要引入一个极小数eps对误差进行修正。经验表明10^-8比较合适。

1、==运算符

所以一个数a如果位于[b-eps , b+eps]之间,就认为a==b成立

#include<stdio.h>
const double eps=1e-8;
#define Equ(a,b) (fabs((a)-(b))<(eps))
int main()
{
    double db=1.23;
    if (Equ(db,1.23))
    {
        printf("true\n");
    }
    else{
        printf("false\n");
    }
    return 0;
}

2、大于运算符(>)

#define More(a,b) (((a)-(b))>(eps))

3、小于运算符(<)

#define Less(a,b) (((a)-(b))<(eps))

4、大于等于运算符(<=)

#define MoreEqu(a,b) (((a)-(b))>(-eps))

5、小于等于运算符(<=)

#define MoreEqu(a,b) (((a)-(b))<(-eps))

6、圆周率π

const double Pi =acos(-1.0);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值