宏定义中有浮点数_算法笔记|(13)第二章C、C++快速入门,浮点数的比较,运算符,复杂度,时间复杂度,空间复杂度...

2.9.2浮点数的比较
    由于计算机当中采用有限位的二进制编码,因此浮点数在计算机当中的存储并不总是精确地,例如在大量的计算以后,一个浮点类型的数3.14在计算机当中可能存储成3.1400000000001,也有可能存储成3.1399999999999,这种情况下会对比较操作带来了极大的干扰
    于是需要引入一个极小数eps来对这种误差进行修正。
1.等于运算符()
如果一个数落在了[b-eps,b+eps]的区间的之间的时候,就应当判断ab成立,那么eps应当取多少呢?经过经验表明,eps取值为10-8是一个合适的数字,对于大多数的情况部件不会漏判也不会误判因此可以将eps定义为常量1e-8

const double eps=1e-8;

为了使得比较更加的方便,把比较操作写成宏定义的形式

#define Equ(a,b) ((fabs((a)-(b)))

加上这么多的括号也是防止宏定义可能带来的错误,注意:如果想要使用不等于,只需要在使用的时候Equ前面加上一个非运算符!就可以了,(!Equ(a,b)),于是在程序当中就可以使用Equ函数来对浮点数进行比较了

#include#includeconst double eps=1e-8;#define Equ(a,b) ((fabs((a)-(b)))int main(){ double db=1.23;if(Equ(db,1.23)){
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值