Как Python ROUND_HALF_EVEN должен обрабатывать десятичные дроби меньше 1?
Похоже, что в каждом определении я могу найти round half to even
включает в себя nearest even integer
(например, десятичная документация Python), как будто ТОЛЬКО целые числа округлены до. Однако, если я округлю десятичные дроби меньше 1, то, похоже, будет следовать тому же принципу, только назначая роль integer
до десятичного знака, к которому я округляюсь. Пример:
>>> THREE_PLACES = decimal.Decimal('0.000')
>>>
>>> decimal.Decimal('.0005').quantize(THREE_PLACES)
>>> Decimal('0.000')
>>>
>>> decimal.Decimal('.0015').quantize(THREE_PLACES)
>>> Decimal('0.002')
В этом примере значение третьего знака после запятой, кажется, играет роль целого числа (округление до 0
и до 2
). Это указанный способ обработки чисел меньше нуля (и, следовательно, как Python ROUND_HALF_EVEN
должен функционировать), и если да, то я просто неправильно понимаю значение слова "целое число" в этом контексте? Или в истории есть что-то еще, и, возможно, это просто совпадение?
1 ответ
Ваша интерпретация верна. Документация не ясна и, вероятно, следует использовать слово digit
вместо integer
, ROUND_HALF_EVEN подразумевает, что последняя цифра результата будет четной (при округлении точно....5000).