Есть ли причина вычитать ноль из числа в Python? - PullRequest
4 голосов
/ 15 апреля 2019

Я недавно сталкивался с этим кодом Python , вот фрагмент кода:

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

Что меня действительно смущает, так это часть:

abs(i - 0)

Есть ли законная причина вычесть ноль из числа, прежде чем передать его в abs()?Кажется, нет никакой математической причины, но, возможно, в языке есть какая-то особенность?

1 Ответ

4 голосов
/ 15 апреля 2019

Мы можем только догадываться, но этот код

abs(i - 0)

пытается материализовать расстояние между i и 0, как мы сделали бы

abs(x - y)

Кроме того, вычитание / добавление 0 не меняет значение с плавающей запятой (иначе это будет означать, что непрерывное добавление 0 приведет к смещению числа ...)

Обратите внимание, что оно имеет стоимостьПроцессор:

>>> 
  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...