解决Python中浮点数计算结果不够精确的问题:decimal模块

时间:2023-01-08 09:40:30

Python进行浮点数计算时存在着不够精确的问题。如下图:

解决Python中浮点数计算结果不够精确的问题:decimal模块

其原因是Python在存储浮点数类型的数据时会存储一个近似的小数。解决方法为使用decimal模块。

decimal模块提供了一个数据类型Decimal用于浮点数计算,相比内置的浮点数类型float,Decimal这个类型有助于需要精确十进制表达的场合,或者用户希望计算结果与手算相符的场合。Decimal重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。

用一段简单的代码来说明:

from decimal import Decimal

def add(x,y):
    return x+y

num1=Decimal(input())
num2=Decimal(input())

print(add(num1,num2))

其运算结果如下图:

解决Python中浮点数计算结果不够精确的问题:decimal模块