Как решить ошибки представления с числами с плавающей точкой в ​​Python? - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно обрезать десятичную дробь до сотых без округления.Я использую метод:

y = 78.459

x = int(y * 100) / 100

, который возвращается как 78.45.Как и должно быть.

Однако, если я сделаю

y = 5.10

x = int(y * 100) / 100

, он вернется как 5.09, когда должно быть 5.10

Я знаю, что этоошибка представления из-за неточностей с плавающей точкой в ​​Python, но я не знаю, как это исправить.Если кто-нибудь может помочь мне разобраться, как исправить ошибки представления, или, возможно, найти лучший способ усечения на сотом месте, я был бы очень признателен.Спасибо

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы можете использовать функцию quantize в модуле decimal:

>>> import decimal
>>> y = decimal.Decimal('78.459')
>>> z = decimal.Decimal('.01')
>>> y.quantize(z, rounding=decimal.ROUND_DOWN)
Decimal('78.45')
0 голосов
/ 18 сентября 2018

Используйте для этого decimal модуль:

>>> from decimal import Decimal as d
>>> y = d('5.10')
>>> x = int(y * 100) / 100
>>> x
5.1
>>> 
...