Python 3.x Python3:long int太大,无法转换为float
我已经在这里检查了一些关于我遇到的相同问题的主题,但它们似乎没有帮助 我的问题是,当我尝试执行以下代码时,在标题中发现了错误。我该怎么做Python 3.x Python3:long int太大,无法转换为float,python-3.x,Python 3.x,我已经在这里检查了一些关于我遇到的相同问题的主题,但它们似乎没有帮助 我的问题是,当我尝试执行以下代码时,在标题中发现了错误。我该怎么做 d=2 while(n != 1): n = 2 d = (math.sqrt(2 + d)) n= (n/d) f = (f * (n)) print (f) 这是因为math.sqrt,作为使用C sqrt函数的结果,可以处理大小不受限制的浮点数。Python无法将长整
d=2
while(n != 1):
n = 2
d = (math.sqrt(2 + d))
n= (n/d)
f = (f * (n))
print (f)
这是因为math.sqrt,作为使用C sqrt函数的结果,可以处理大小不受限制的浮点数。Python无法将长整数转换为浮点数,因为它太大了。 请参见关于大整数平方根的方法
更好的是,您可以使用,这是一种存储在base-10中的无限大小的数字类型。使用
decimal.decimal(number).sqrt()
查找数字的sqrt。如果执行该代码,则可能会出现“名称错误:名称'n'未定义”。你实际上在执行什么代码?哎呀。我错过了d=2以上的n=2的值。但是,我如何准确地将我的数字精确到2d.p?@Sab我不明白。d.p.代表什么?小数点?默认情况下,decimal有38个小数位,因此sqrt将精确到38个小数位。是的,小数位。假设math.srqt(2)给出了一个长的数字(它是无理的),因此我得到了错误。那么,我如何使用十进制模块使其计算到只有2个小数位数,从而避免错误呢?我的答案有使用十进制的正确代码;不需要使用那个解决方法。@Sab看起来我对十进制的理解是错误的;请使用中的方法。(答案中也有链接)。