Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python舍入错误和导入小数不起作用_Python_Linux - Fatal编程技术网

Python舍入错误和导入小数不起作用

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 我的问题与那篇文章不同,那篇文章不询问十进制库

需要用小数计算但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


我的问题与那篇文章不同,那篇文章不询问十进制库。

您看到的输出不是错误。因为您使用浮点值初始化十进制,所以它使用浮点运算。另一方面,如果你这样做

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