python - 是否有理由从 Python 中的数字中减去零?
问题描述
我最近遇到了这个 Python 代码,这是一个代码片段:
if abs(i - 0) < SMALL_NUMBER:
# For non-inclined orbits, raan is undefined;
# set to zero by convention
真正让我困惑的是这部分:
abs(i - 0)
是否有任何正当理由在将数字传递给之前从数字中减去零abs()
?似乎没有任何数学原因,但也许语言中有一些怪癖?
解决方案
我们只能猜测,但这段代码
abs(i - 0)
正试图实现 and 之间的距离,就像我们会做的那样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
推荐阅读
- server - OroCRM 让我的托管服务器变慢?
- css - 如何获得适合视口的垂直线?
- python - 带有 alpha 交互的 matplotlib 图例
- python - 如何在 Django 中表达一对多并使用附加和删除?
- php - 覆盖表名后创建不起作用
- ajax - 如何允许formData发送null
- python - boto 3 中 Comprehend 的“DataAccessRoleArn”是什么?
- dynamics-crm - Dynamics 365 FetchXML - 对字符串使用 IN 运算符
- identityserver4 - Identity Server 4 是否符合 NIST 标准?
- rest - 如何在 REST::Client perl 中进行不安全的 SSL 连接