我正在尝试在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)
.