Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,有没有理由从数字中减去零?_Python_Math - Fatal编程技术网

在Python中,有没有理由从数字中减去零?

在Python中,有没有理由从数字中减去零?,python,math,Python,Math,我最近遇到了一个代码片段: if abs(i - 0) < SMALL_NUMBER: # For non-inclined orbits, raan is undefined; # set to zero by convention 在将一个数字传递到abs()之前,是否有合法的理由将其减去零?似乎没有任何数学上的原因,但也许语言中有一些怪癖?我们只能猜测,但这段代码 abs(i - 0) 正试图实现i和0之间的距离,就像我们所做的那样 abs(x - y) 除此之

我最近遇到了一个代码片段:

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

在将一个数字传递到
abs()
之前,是否有合法的理由将其减去零?似乎没有任何数学上的原因,但也许语言中有一些怪癖?

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

abs(i - 0)
正试图实现
i
0
之间的距离,就像我们所做的那样

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
>
6 0负载_全局0(abs)
3负载_全局1(i)

6 LOAD_CONST 1(0)我会理解
I-0.0
,但在这里……老实说,除了尝试进行类型检查之外,我认为没有任何理由这样做。添加了代码段。代码来自轨道数学库,但问题与轨道数学无关,除此之外,链接我无法提供更多上下文。什么是
I
?也许这也会给你一个提示,
i-0
i
有何不同。也许可以试着就此联系作者。我也想不出一个合法的理由。与你辩论,也许
0
只是站在数学意义上。我认为作者试图阐明“任意接近0”的概念。是的,可能。但是它并不是免费的,正如分解所显示的那样,我认为除了“它让人困惑”之外,从性能的角度删除它们也是一个好主意?tbh对性能的影响可能非常小。但我不会这样写:)
>>> 
  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