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

在Python中比较浮动几乎相等的最佳方法是什么?

在Python中比较浮动几乎相等的最佳方法是什么?

慕沐林林 2019-06-05 15:55:29
在Python中比较浮动几乎相等的最佳方法是什么?众所周知,由于四舍五入和精确性的问题,将浮标与平等进行比较有点微妙。例如:https:/starascii.wordpress.com/2012/02/25/比较-浮点数-2012-版本/在Python中处理这个问题的推荐方法是什么?这里肯定有一个标准的库函数吗?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

Python 3.5添加了math.isclosecmath.isclose功能如上文所述佩普485.

如果使用早期版本的Python,则在文献资料.

def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
    return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

rel_tol是一种相对的容差,它乘以这两个参数的大小;随着值的增大,它们之间允许的差值也随之增大,同时仍然认为它们是相等的。

abs_tol是在任何情况下都适用的绝对公差。如果差值小于这两种公差中的任何一种,则该值被视为相等。


查看完整回答
反对 回复 2019-06-05
?
猛跑小猪

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

像下面这样简单的东西还不够好吗?

return abs(f1 - f2) <= allowed_error


查看完整回答
反对 回复 2019-06-05
?
九州编程

TA贡献1785条经验 获得超4个赞

我同意Gareth的答案可能最适合作为一个轻量级函数/解决方案。

但我认为,如果您正在使用NumPy或正在考虑使用NumPy,这将是有帮助的。

numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)

不过,有一点免责声明:安装NumPy可能是一种非常重要的体验,取决于您的平台。


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 512 浏览
慕课专栏
更多

添加回答

举报

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