众所周知,由于舍入和精度问题,比较浮点数是否相等有点繁琐。
例如: https ://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
在 Python 中处理这个问题的推荐方法是什么?
这个地方有标准库函数吗?
原文由 Gordon Wrigley 发布,翻译遵循 CC BY-SA 4.0 许可协议
众所周知,由于舍入和精度问题,比较浮点数是否相等有点繁琐。
例如: https ://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
在 Python 中处理这个问题的推荐方法是什么?
这个地方有标准库函数吗?
原文由 Gordon Wrigley 发布,翻译遵循 CC BY-SA 4.0 许可协议
像下面这样简单的东西可能就足够了:
return abs(f1 - f2) <= allowed_error
原文由 Andrew White 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答887 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
Python 3.5 添加了
math.isclose
和cmath.isclose
函数,如 PEP 485 中所述。如果您使用的是早期版本的 Python, 文档 中提供了等效功能。
rel_tol
是相对容差,乘以两个参数中较大的一个;随着值变大,它们之间的允许差异也会变大,同时仍然认为它们相等。abs_tol
是在所有情况下按原样应用的绝对公差。如果差值小于这些容差中的任何一个,则认为这些值相等。