从Decimal的文档页面来看,我认为一旦我们使用十进制来计算,它将是一个正确的结果,没有任何浮动错误。
但是当我尝试这个方程时
from decimal import Decimal, getcontext
getcontext().prec = 250
a = Decimal('6')
b = Decimal('500000')
b = a ** b
print('prec: ' + str(getcontext().prec) + ', ', end='')
print(b.ln() / a.ln())
Run Code Online (Sandbox Code Playgroud)
它给了我不同的结果!
我想计算以 6 为基数表示的数字6**500000,所以我的预期结果是int(b.ln() / a.ln()) + 1,所以我的预期结果是,应该是 500001。但是,当我将 prec 设置为 250 时,它给出了错误的结果。我该如何解决这个问题?
另外,如果我想输出不带科学计数法(即 )的结果5E+5,我该怎么办?