当前位置: 首页 > 知识库问答 >
问题:

int太大,无法转换为浮点

岳和泽
2023-03-14

我正在用python研究基本微积分和阶乘。试图从牛顿级数生成PI,但我不能超过171次迭代,因为这个错误:overflowerrror:int太大,无法转换为float。代码如下:

我导入了这个:从数学导入阶乘,gamma/从数学导入sqrt

def calculus(ran):

    x = 1/2

    exp = 0
    p = 0

    terminos = []
    length = len(terminos)

    for i in range(ran):
        k = i
        n = 1/2

        tzero = 1

        exp += 2

        num = gamma(n)

        if k != 0:
           
            den1 = factorial(k)
            den2 = n-k
            den3 = gamma(den2)
            den = den1 * den3
            f1 = num/den

           
            f2 = 1/(exp+1)
            f3 = x**(exp+1)

            terminos.append(f1*f2*f3)
        else:
            f1 = x
            f2 = 1
            f3 = 1
            terminos.append(f1*f2*f3)

    p = 0

    terminos.append(-sqrt(3)/8)

    serie = sum(terminos)

    pi = serie * 12

    print(pi)

calculus(172)

共有1个答案

濮阳翔
2023-03-14

根据Python教程,在精度很重要的情况下,最好使用十进制分数模块。

例如,你应该写f2=1/(exp 1),而不是写f2=1/(exp 1)

from fractions import Fraction
f2 = Fraction(1, exp+1)

阅读本文以获得更好的理解。

请注意,在Python中不建议进行如此繁重的计算,即使是使用内置库,如分数。您应该使用像NumPy这样的库来获得更好的性能和更高的精度。

 类似资料:
  • 问题内容: 我想对成绩簿方法使用2D数组,其中包含学生姓名,然后是考试成绩。在课堂上,我有以下内容。 但是我得到一个错误int []无法转换为int。 问题答案: 你有: 但是是一个。数组维数必须为,因此不能用作数组维数(鉴于字面量是多少,我可以理解您对错误的困惑:它想要一个,但您给了它一个)。 从您的描述来看,我猜您的意思是: 哪里是你需要的,包含考试的次数。不过,只是一个猜测。

  • 问题内容: 这里是编程的新手,并且我一直收到错误消息,“不兼容的类型,不能将int转换为int []”,问题是如果R1和R2的长度相等,则将它们加在一起,如果没有打印出一条信息,说明“数组的长度必须相同”,如果这很重要,则不知道我在哪里出错,将不胜感激任何帮助 问题答案: 您需要分配给数组元素,但是这样做做错了。

  • 我试图得到一个非常大的数字的平方根,但我得到了错误:deltaSqrt=pow(delta,0.5)溢出错误:长int太大,无法转换为浮动 在我的情况下,delta等于: 509752415912430571120834697697209399451791855931983919398681840231635980912719828796195714368058047566515853712321

  • 我试图检查一个数字是否是一个完美的平方。然而,我正在处理非常大的数字,所以python认为它的无穷大出于某种原因。有办法绕过这个吗?这是代码,第一个变量只包含一堆非常非常非常非常大的数字

  • 问题内容: 我在Windows和Mac上都使用python 3.5 64位运行完全相同的代码。 在Windows上,它看起来像这样: 但是,此代码在我的Mac上正常工作。任何人都可以帮助解释原因或提供Windows代码的解决方案吗?非常感谢! 问题答案: 一旦您的数字大于,您将得到该错误。 您可以通过检查确认这一点: 若要更精确地获取数字,请不要在后台传递使用有界C整数的int类型。使用默认的fl

  • 问题内容: 我想将SQL COUNT的结果存储在变量中,然后将它们除,但是出现错误: 注意:类mysqli_result的对象无法在----中转换为int 我曾经在测试时显示结果…我该如何解决? 问题答案: 您需要先获取结果并将其存储在变量中,然后再进行数学运算。