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

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

众所周知,由于四舍五入和精确性的问题,将浮标与平等进行比较有点微妙。

例如:https:/starascii.wordpress.com/2012/02/25/比较-浮点数-2012-版本/

在Python中处理这个问题的推荐方法是什么?

这里肯定有一个标准的库函数吗?


慕沐林林
浏览 513回答 3
3回答

犯罪嫌疑人X

Python 3.5添加了math.isclose和cmath.isclose功能如上文所述佩普485.如果使用早期版本的Python,则在文献资料.def&nbsp;isclose(a,&nbsp;b,&nbsp;rel_tol=1e-09,&nbsp;abs_tol=0.0): &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;abs(a-b)&nbsp;<=&nbsp;max(rel_tol&nbsp;*&nbsp;max(abs(a),&nbsp;abs(b)),&nbsp;abs_tol)rel_tol是一种相对的容差,它乘以这两个参数的大小;随着值的增大,它们之间允许的差值也随之增大,同时仍然认为它们是相等的。abs_tol是在任何情况下都适用的绝对公差。如果差值小于这两种公差中的任何一种,则该值被视为相等。

猛跑小猪

像下面这样简单的东西还不够好吗?return&nbsp;abs(f1&nbsp;-&nbsp;f2)&nbsp;<=&nbsp;allowed_error

九州编程

我同意Gareth的答案可能最适合作为一个轻量级函数/解决方案。但我认为,如果您正在使用NumPy或正在考虑使用NumPy,这将是有帮助的。numpy.isclose(a,&nbsp;b,&nbsp;rtol=1e-05,&nbsp;atol=1e-08,&nbsp;equal_nan=False)不过,有一点免责声明:安装NumPy可能是一种非常重要的体验,取决于您的平台。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python