Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python3:long int太大,无法转换为float_Python 3.x - Fatal编程技术网

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看起来我对十进制的理解是错误的;请使用中的方法。(答案中也有链接)。