【发布时间】:2013-11-28 05:00:05
【问题描述】:
这是我的代码:
import math
x=float(( input ('x ? ' )))
n = 1000 #a big number
b=0
for i in range (n):
a=(((((-1)**i))*(x**((2*i)+1)))/(math.factorial((2*i)+1)))
b+=a
print (b)
但它不起作用并显示此错误:
"OverflowError: long int too large to convert to float"
【问题讨论】:
-
有什么问题?
math.factorial(1999)is 太大而无法转换为浮点数。大约是 10^5733。float的最大值是sys.float_info.max,我打赌你的系统大约是 10^308。 -
您可以使用递归计算
as:a[i] = -a[i-1] x**2 / 2i / (2i + 1) -
@SteveJessop 例如,当我想计算 sin 30 时,我的输入是 0.523 。但它显示“OverflowError: long int too large to convert to float”
-
@RuggeroTurra 你看到我最后的评论了吗?!
-
输入无关紧要,无论输入值如何,您的代码都会计算
factorial(1999)(以及一堆其他数字太大而无法转换为float)。当您将float除以整数时,Python 会尝试将整数转换为浮点数。它失败了。
标签: python trigonometry taylor-series