AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

浮点数比较精度问题

作者: 作者的头像   Chosen1. ,  2021-02-20 20:48:01 ,  阅读 32


2


1

浮点数比较精度问题


今天被浮点数精度问题关了小黑屋,整理了一下两个浮点数的任意比较形式

eps

   eps缩写自epsilon,表示一个小量,但这个小量又要确保远大于浮点运算结果的不确定量。
   eps最常见的取值是1e-8左右。引入eps后,我们判断两浮点数a、b相等的方式如下:

定义三出口函数如下:

double eps = 1e-8;
int sgn(double a){return a < -eps ? -1 : a < eps ? 0 : 1;}

则各种判断大小的运算都应做如下修正:

传统意义       修正写法1         修正写法2

a == b      sgn(a - b) == 0      fabs(a – b) < eps

a != b      sgn(a - b) != 0      fabs(a – b) > eps

a < b       sgn(a - b) < 0         a – b < -eps

a <= b      sgn(a - b) <= 0        a – b < eps

a > b       sgn(a - b) > 0         a – b > eps

a >= b      sgn(a - b) >= 0        a – b > -eps

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息