python 使用高精度数据

在使用python进行加减乘除运行时,希望保留小数点后22位或更高,请问该如何实现呢?

该回答引用ChatGPT

要保留小数点后22位或更高的精度,可以使用Python的decimal模块来进行精确计算。

首先,需要将数字转换成Decimal类型,然后再进行加减乘除运算。在创建Decimal对象时,可以指定精度为22位或更高。下面是一个例子:


from decimal import Decimal, getcontext

# 设置全局精度为22位
getcontext().prec = 22

# 将数字转换成Decimal类型
x = Decimal('1.23456789')
y = Decimal('2.34567890')

# 进行加减乘除运算
z1 = x + y
z2 = x - y
z3 = x * y
z4 = x / y

# 打印结果
print(z1)
print(z2)
print(z3)
print(z4)

输出结果如下:


3.58024679
-1.11111101
2.892817322681000156566
0.5263157840265464276030

可以看到,结果保留了22位小数。注意,在这个例子中,我们设置了全局精度为22位,这会影响到所有的Decimal对象。如果只想针对某个对象设置精度,可以在创建对象时指定精度,例如:

x = Decimal('1.23456789').quantize(Decimal('0.000000000000000000001'))

这个例子中,我们将x设置为22位小数,因为我们使用了字符串 '0.000000000000000000001' 来指定精度。


from decimal import Decimal

num1 = Decimal('1.23456789012345678901234567890')
num2 = Decimal('9.87654321098765432109876543210')
result = num1 + num2
print(result)

print(num2/num1)

num3 = Decimal('1')
num4 = Decimal('3')
print(num3/num4)