Python舍入错误和导入小数不起作用
需要用小数计算但python显示错误,但书中给出的解决方案,不起作用 例如,如果尝试求和0.1+0.1+0.1,则显示经典错误,但如果尝试:Python舍入错误和导入小数不起作用,python,linux,Python,Linux,需要用小数计算但python显示错误,但书中给出的解决方案,不起作用 例如,如果尝试求和0.1+0.1+0.1,则显示经典错误,但如果尝试: from decimal import Decimal d = Decimal(0.1) d + d + d 得到的误差为: Decimal('0.3000000000000000166533453694') 假设解决方案出现错误,请帮助,在openSuse TumbleWeed中使用python 3.8 我的问题与那篇文章不同,那篇文章不询问十进制库
from decimal import Decimal
d = Decimal(0.1)
d + d + d
得到的误差为:
Decimal('0.3000000000000000166533453694')
假设解决方案出现错误,请帮助,在openSuse TumbleWeed中使用python 3.8
我的问题与那篇文章不同,那篇文章不询问十进制库。您看到的输出不是错误。因为您使用浮点值初始化十进制,所以它使用浮点运算。另一方面,如果你这样做
d2 = Decimal('0.1')
print(d2 + d2 + d2)
您将得到预期的结果。以下是一个示例,您还可以使用getcontext.prec调整精度
请将输出显示为文本,而不是屏幕截图。这是否回答了您的问题?所得误差为。。。这不是一个错误。这是一次成功计算的结果。这正是它的工作原理。请参阅上面的链接,以了解为什么不能获得您可能期望的精确0.3的详细信息。@Code学徒:这篇文章不一样,我的问题是关于反十进制库的,而您共享的那篇文章并不询问这样的库。这是一样的,因为您使用浮点值初始化十进制对象。
from decimal import *
getcontext().prec = 100 # Set a new precision
b = Decimal(0.1)
c = Decimal("0.1")
print(b+b+b)
print(c+c+c)
# 0.3000000000000000166533453693773481063544750213623046875
# 0.3