为了账号安全,请及时绑定邮箱和手机立即绑定

使用==运算符比较浮点/双精度值

使用==运算符比较浮点/双精度值

UYOU 2019-11-19 10:04:06
当我开始使用equals运算符比较两个float值时,我使用的代码查看工具会抱怨以下内容。正确的方法和方法是什么?有没有可以重用的辅助函数(commons- *)?描述无法使用equals(==)运算符比较浮点值说明由于使用舍入误差,因此使用相等(==)或不相等(!=)运算符比较浮点值并不总是准确的。建议比较两个浮点值,看它们是否接近。float a;float b;if(a==b){..}
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

IBM推荐使用除法而不是减法比较两个浮点数-这样可以更容易地选择适用于所有输入范围的epsilon。


if (abs(a/b - 1) < epsilon)

至于epsilon的值,我将使用Wikipedia表中5.96e-08给出的值,或者可能是该值的2倍。


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 356 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信