首页 > 解决方案 > 是否有理由从 Python 中的数字中减去零?

问题描述

我最近遇到了这个 Python 代码,这是一个代码片段:

if abs(i - 0) < SMALL_NUMBER:
    # For non-inclined orbits, raan is undefined;
    # set to zero by convention

真正让我困惑的是这部分:

abs(i - 0)

是否有任何正当理由在将数字传递给之前从数字中减去零abs()?似乎没有任何数学原因,但也许语言中有一些怪癖?

标签: pythonmath

解决方案


我们只能猜测,但这段代码

abs(i - 0)

正试图实现 and 之间的距离,就像我们会做的那样i0

abs(x - y)

除此之外,减/加 0 不会改变浮点数的值(否则这意味着连续加 0 会使数字漂移......)

请注意,它在 CPU 方面具有成本:

>>> 
  6           0 LOAD_GLOBAL              0 (abs)
              3 LOAD_GLOBAL              1 (i)
              6 LOAD_CONST               1 (0)  <=== not optimized out
              9 BINARY_SUBTRACT                 <=== not optimized out
             10 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
             13 RETURN_VALUE

推荐阅读