如何修复溢出错误:int太大而无法转换为浮点错误?

2024-09-27 21:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文


def factorial(n):
    if n == 1:
        return n
    else:
        return n*factorial(n-1)


def sin(x):
    OddNumber = 3
    counter = 1
    NumberOfTerms = 80
    while counter < NumberOfTerms:
        x -= (x**OddNumber)/(factorial(OddNumber))
        OddNumber += 2
        counter += 1
        x += (x**OddNumber)/(factorial(OddNumber))
        OddNumber += 2
        counter += 1
    return x


theta = float(input("input angle in degrees: "))
theta = float((theta*math.pi/180))
print(sin(theta))

这是我用来寻找x角sin近似值的代码。我想增加变量NumberOfTerms来提高精度,但当我这样做时,我得到了这个错误

OverflowError: int too large to convert to float

我怎样才能避开这件事?有没有办法绕过这个问题


Tags: toinputreturnifdefcountersinfloat
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:34

当您使用倒数阶乘值时,代码可以很好地处理较高的NumberOfTerms

import math

def reciproc_factorial(n):
    if n == 1:
        return n
    else:
        return 1/n*reciproc_factorial(n-1)


def sin(x):
    OddNumber = 3
    counter = 1
    NumberOfTerms = 150
    while counter < NumberOfTerms:
        x -= (x**OddNumber) * (reciproc_factorial(OddNumber))
        OddNumber += 2
        counter += 1
        x += (x**OddNumber) * (reciproc_factorial(OddNumber))
        OddNumber += 2
        counter += 1
    return x


theta = 23
theta = float((theta*math.pi/180))
print(sin(theta))

相关问题 更多 >

    热门问题