我的代码:import math
def calculate(operator, firstValue, secondValue):
if operator == '^':
toReturn = math.pow(firstValue, secondValue)
. . .
return toReturn
. . .
new = calculate('^', 19, 19)
print(' is ' + str(new))
workingStack.append(int(new))
print('New stack is ' + str(workingStack))
结果是
^{pr2}$
这对于格式化字符串来说没问题,但是当我实际使用变量时,它显示它正在失去数字的精度,正如您可以看到它计算的那样数学.pow(19,19)为1978419655660313627328512,但应为1978419655660313589123979。在
这里有一个更好的方法来比较它们1978419655660313627328512<;计算值
1978419655660313589123979<;真值
你可以看到错误发生在科学记数法失去了上面打印的结果的精度。我需要能够在其他计算中使用变量的真值。在
我读过很多关于python3自动将int转换为bignum的文章,但是bignum似乎还不够。我也试过19*19。它用同样的错误数字计算。在
有人能帮我吗?在