如何在Python中使用精度计算浮点数

3
precision = 2
number = 31684.28
result = Decimal(number) - Decimal(10 ** -precision)
print(result)

期望的输出:

31684.27

实际输出:

31684.26999999999883584657356

我想要做的是从number中减去0.01


首先,为什么你要从数字中减去精度?o_O - Olvin Roght
我只想减去0.01。 - mateatdang
4个回答

3

您应该使用以下格式:

print("{:.2f}".format(result))

或者使用round函数,如下所示:

print(round(result, 2))

评论

一开始的问题不够清晰。在我看来,正确答案是 @U11-Forward 提供的。


他已经在使用Decimal,这应该可以解决这个问题。问题出在10 ** -price_precision上。 - Olvin Roght
我不认为这是原帖作者想要的... 无论如何,他对此并不清楚。 - U13-Forward
@U11-Forward 是的,他刚刚评论说他想减去0.01。一开始不太清楚。你很好地捕捉到了! - David
@DavidS 是的,我认为现在我的答案对他来说可能更可行 - U13-Forward

3
您需要使用Decimal(...)来表示值,而不是输出。请尝试以下代码:
from decimal import Decimal
precision = 2
number = 31684.28
result = number - float(10 ** Decimal(-precision))
print(result)

输出:

31684.27

1
你可以使用十进制库的quantize方法library
from decimal import Decimal


result = Decimal('31684.26999999999883584657356').quantize(Decimal('0.01'))
# result = Decimal('31684.27')

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接