如何在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)吗?