如何在Python中使用浮点数解决表示错误?

时间:2018-09-18 01:18:26

标签: python floating-point truncation

我需要在小数点后一位舍去小数点后四舍五入。 我正在使用方法:

y = 78.459

x = int(y * 100) / 100

,其返回为78.45。应当。

但是,如果我愿意

y = 5.10

x = int(y * 100) / 100

它应该以{{1​​}}的形式返回5.09

由于Python中的浮点错误,我知道这是一个表示错误,但是我不知道如何解决它。 如果有人可以帮助我弄清楚如何解决制图表达错误,或者找到更好的方法来截断百分位数,我将不胜感激。 谢谢

2 个答案:

答案 0 :(得分:1)

为此使用decimal模块:

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

答案 1 :(得分:0)

您可以在decimal模块中使用quantize function

>>> import decimal
>>> y = decimal.Decimal('78.459')
>>> z = decimal.Decimal('.01')
>>> y.quantize(z, rounding=decimal.ROUND_DOWN)
Decimal('78.45')