在 Python 中比较浮点数是否几乎相等:仔细观察
由于潜在的舍入和精度问题,比较浮点数是否完全相等Python 可能具有挑战性。这是一个众所周知的问题,Bruce Dawson 的“比较浮点数,2012 版”博客文章中强调了这一点。为了在 Python 中有效应对这一挑战,可以考虑多种方法。
标准库函数
Python 3.5 引入了 math.isclose() 和 cmath.isclose()函数,专门用于将浮点数与容差级别进行比较。这些函数接受三个参数:
如果a和b之间的绝对差小于rel_tol * max(abs(a), abs(b))或abs_tol,则这些值被认为是相等的。
早期 Python 版本的自定义函数
如果您使用的 Python 版本早于3.5 中,您可以根据文档中提供的以下代码片段实现自己的 isclose() 函数:
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)
此自定义函数提供与标准库函数相同的功能,允许您比较内部的浮点数指定的公差范围。
以上是如何在 Python 中准确比较浮点数是否接近相等?的详细内容。更多信息请关注PHP中文网其他相关文章!