Как округлить 0,055 до 0,06 в Python? - PullRequest
1 голос
/ 26 марта 2020

Результат простого деления -34.11/2 возвращает -17.055 Существует ли функция python, которая возвращает округление в десятичном виде? Я ожидаю увидеть -17.06

И да, я проверил эти ответы, но ни один не может ответить на этот вопрос: Округление до второго десятичного знака в Python

Как округлить до ближайшего десятичного числа в Python

Увеличить значение Python с плавающей запятой на наименьшее возможное значение Python округлить до ближайшего 0,25

Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

4 голосов
/ 26 марта 2020

Это ограничение с плавающей запятой; обойти это с помощью decimal.Decimal.

>>> from decimal import Decimal
>>> Decimal(-34.11/2)  # See? Not quite the value you thought.
Decimal('-17.05499999999999971578290569595992565155029296875')
>>> Decimal(-34.11) / Decimal(2)  # This doesn't quite work either, because -34.11 is already a little bit off.
Decimal('-17.05499999999999971578290570')
>>> Decimal("-34.11") / Decimal("2")
Decimal('-17.055')
>>> round(Decimal("-34.11") / Decimal("2"), 2)
Decimal('-17.06')
...