xml中的UDF使用Python Decimal或mpmath进行定义精度的计算



我正在尝试在xlwings中使用UDF,我希望实现所需的精度,因为Python Decimal和mpmath两个库都允许这样做。我用以下函数计算2 ^ 0.5:

@xw.func
def fce_2(x, y):
import decimal
from decimal import Decimal
decimal.getcontext().prec = 100
z = Decimal(x)** Decimal(y)

return z

返回1,4142

@xw.func
def fce_1(x, y):
from mpmath import mp
mp.dps = 100
z = mp.mpf(x)** mp.mpf(y)

return z

返回1,414213562它们都没有返回所需的小数位数,小数位数应该是100。

Excel单元格中的数字总是存储为64位双浮点数,大约有15位有效数字。应该可以显示更多的数字作为字符串,使用return str(z).