吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2635|回复: 4
收起左侧

[C&C++ 转载] 【笔记】浮点数比较

[复制链接]
sphao 发表于 2017-8-13 17:49
本帖最后由 sphao 于 2017-8-13 17:50 编辑

    浮点数在计算机中的存储并不精确,会对“==”比较带来极大地干扰,因此需要引进一个极小数eps来对这种误差进行修正。
 我们规定,当一个数a落在了[b-eps,b+eps]区间中时,就应当判断为a==b成立。
 经验表明,eps取10-8是一个合适的数字,因此可以将eps定义为常量1e-8:
   const double eps = 1e-8;
    为了使比较更加方便,把比较操作写成宏定义的形式:
      #define Equ(a,b) ((fabs((a)-(b)))<(eps))
     即 如果a,b的差的绝对值小于eps就返回true,如果想使用不等于,只要在使用的时候在Equ前加个非运算符“!”即可。
    同样,由于这种误差的影响,会使其他运算符的比较也出现差错,也需要利用eps进行修正。
         大于运算符(>)  #define More(a,b) (((a)-(b))>(eps)
        小于运算符(<)  #define Less(a,b) (((a)-(b))<(-eps))
        大于等于运算符(>=)  #define MoreEqu(a,b) (((a)-(b))>(-eps))
        小于等于运算符(<=)  #define More(a,b) (((a)-(b))<(eps))
    圆周率π  
        因为cosπ = -1, π = arccos(-1)。因此只需把π写成常量acos(-1.0)即可。  
            const double Pi = acos(-1.0);



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qiaoqiaota 发表于 2017-8-13 18:07
学习了       多更新一点
roinlong 发表于 2017-8-13 18:19
ShadowTeam 发表于 2017-8-13 18:49
xyzhuanjian 发表于 2017-8-13 19:07
不同的语言,浮点数比较好象不太一样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 04:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表