我最近遇到this Python code,下面是一个代码段:
if abs(i - 0) < SMALL_NUMBER:
# For non-inclined orbits, raan is undefined;
# set to zero by convention
真正让我困惑的是这部分:
abs(i - 0)
在将数字传递给abs()
之前是否有合理的理由要从数字中减去零?似乎没有任何数学上的原因,但也许这门语言有些古怪?
答案 0 :(得分:4)
我们只能猜测,但是这段代码
abs(i - 0)
正试图在i
和0
之间实现距离,就像我们要做的
abs(x - y)
除此之外,减/加0不会改变float的值(否则,意味着连续加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