使用 decimal.Decimal 从表达式输出多个值?

Multiple value output from expression using decimal.Decimal?

假设我有一个涉及 decimal 模块的表达式,我想在其中输入多个值并获取多个值。

a=np.array([1,2,3])
b=np.array([4,5,6])
A=a.astype(object)
B=b.astype(object)

getcontext().prec = 100
x=Decimal(A+B)

这会引发错误,因为 Decimalnumpy 数组不兼容。

我如何通过 Decimal 表达式传递多个值并以这样一种方式获取多个值,以便我可以轻松地将输出转换为浮点数,然后将它们放入 numpy 数组中?

我想要这个的原因是某个计算涉及 A+B 被错误地计算为 float 但是一旦 Decimal(A+B) 被计算出来,结果输出可以转换为float 并且不会在计算中造成进一步的困难。

编辑:我一直在开发一种 'cheat' 方法,但我不知道它是否有腿:

a=np.array([1,2,3])
b=np.array([4,5,6])
A=a.astype(object)
B=b.astype(object)

getcontext().prec = 100
for i in range (0,2):
    x=Decimal(A[i]+B[i])
    print(x)

这里的关键是缩进 print(x),这会打印 5 7 9。未能真正解决上述问题,有没有办法将 5 7 9 转换为 np.array([5,7,9])。 (也许通过导出为 csv 文件并再次导入 Python?)

我想你可以像这样手动完成:

r = np.array(tuple(Decimal(x+y) for x, y in zip(A, B)), np.float64)
print(r)

输出:

[5. 7. 9.]