Skip to main content
 首页 » 编程设计

python之在 Python 中乘以 Decimal 时的精度损失

2025年05月04日17lvdongjie

当尝试在 python 中乘以两个小数对象时,我遇到了精度损失。我该如何解决这个问题?

    u = Decimal("1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727350138462309122970249248360558507372126441214970999358314132") 
   y = Decimal(10**100) 
   z = u*y 
   str(int(z)) 
=> '14142135623730950488016887240000000000000000000000000000000000000000000000000000000000000000000000000' 

请您参考如下方法:

Decimal 不是像 int 那样的任意精度,而是具有固定但可变的精度小数位数。默认情况下,这是 28,这恰好是您的号码在此刻中断的位置。

您可以通过执行 decimal.getcontext().prec=128 或您需要的任何精度来更改它。有关更多信息,请参阅 documentation .