使用 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)
这会引发错误,因为 Decimal
与 numpy
数组不兼容。
我如何通过 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.]
假设我有一个涉及 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)
这会引发错误,因为 Decimal
与 numpy
数组不兼容。
我如何通过 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.]