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

如何在Python中解决浮点数表示错误?,python,floating-point,truncation,Python,Floating Point,Truncation,我需要在不舍入的情况下截断小数点后的第一百位。 我正在使用以下方法: y = 78.459 x = int(y * 100) / 100 返回为78.45。应该如此 然而,如果我这样做 y = 5.10 x = int(y * 100) / 100 当它应该是5.10 我知道这是一个表示错误,因为Python中存在浮点错误,但我不知道如何修复它。 如果有人能帮我找出如何修复表示错误,或者找到更好的方法在第一百位截断,我将非常感激。 感谢为此使用十进制模块: >>> fr

我需要在不舍入的情况下截断小数点后的第一百位。 我正在使用以下方法:

y = 78.459

x = int(y * 100) / 100
返回为
78.45
。应该如此

然而,如果我这样做

y = 5.10

x = int(y * 100) / 100
当它应该是
5.10

我知道这是一个表示错误,因为Python中存在浮点错误,但我不知道如何修复它。 如果有人能帮我找出如何修复表示错误,或者找到更好的方法在第一百位截断,我将非常感激。
感谢为此使用
十进制
模块:

>>> from decimal import Decimal as d
>>> y = d('5.10')
>>> x = int(y * 100) / 100
>>> x
5.1
>>> 
您可以在
十进制
模块中使用:

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

看看这个:这不是十进制的正确用法。@stephernauch真的吗?那么最好的是什么呢?好的,谢谢。我能从input()向d()传递一个值吗?@Hollyleaf25你的意思是什么?比如如果x=input(“输入一个数字”),那么我能做y=d(x)吗?