首页 >后端开发 >Python教程 >如何在 Python 中准确比较浮点数是否接近相等?

如何在 Python 中准确比较浮点数是否接近相等?

DDD
DDD原创
2024-12-22 19:24:11678浏览

How Can I Accurately Compare Floating-Point Numbers for Near-Equality in Python?

在 Python 中比较浮点数是否几乎相等:仔细观察

由于潜在的舍入和精度问题,比较浮点数是否完全相等Python 可能具有挑战性。这是一个众所周知的问题,Bruce Dawson 的“比较浮点数,2012 版”博客文章中强调了这一点。为了在 Python 中有效应对这一挑战,可以考虑多种方法。

标准库函数

Python 3.5 引入了 math.isclose() 和 cmath.isclose()函数,专门用于将浮点数与容差级别进行比较。这些函数接受三个参数:

  • a 和 b:要比较的浮点值
  • rel_tol(可选):相对容差,这是应用于较大幅度的因子a和b定义允许的差异
  • abs_tol(可选):绝对容差,设置最小差异阈值

如果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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn