Как 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).

Другие вопросы по тегам