在我的情况下,除以 0.0 或 -0.0 是合理的,我希望分别看到 +Inf 和 -Inf 作为结果。看来 Python 喜欢抛出一个
ZeroDivisionError: float division by zero
无论哪种情况。显然,我想我可以简单地用 0.0.0.0 的测试来包装它。但是,我找不到区分 +0.0 和 -0.0 的方法。 (仅供引用,您可以通过键入或通过常见计算(例如 -1.0 * 0.0)轻松获得 -0.0。
IEEE 很好地处理了这一切,但 Python 似乎煞费苦心地隐藏了 IEEE 深思熟虑的行为。事实上,0.0 == -0.0 实际上是一个 IEEE 特性,因此 Python 的行为严重破坏了事情。它在 C、Java、Tcl 甚至 JavaScript 中运行良好。
建议?
最佳答案
from math import copysign
def divide(numerator, denominator):
if denominator == 0.0:
return copysign(float('inf'), denominator)
return numerator / denominator
>>> divide(1, -0.0)
-inf
>>> divide(1, 0)
inf
关于python - 如何让 Python 除以 -0.0 和 0.0 分别得到 -Inf 和 Inf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226633/