我收到溢出错误(OverflowError:(34,'结果太大')
我想计算pi到100的小数,这是我的代码:
def pi(): 
    pi = 0 
    for k in range(350): 
        pi += (4./(8.*k+1.) - 2./(8.*k+4.) - 1./(8.*k+5.) - 1./(8.*k+6.)) / 16.**k 
    return pi 
print(pi())
我在Python中定义了一个阶乘函数如下:
def fact(n):
    if n == 1:
        return n
    else:
        return n * fact(n-1)
print(fact(100))
如下朱莉娅:
function fact(n)
    if n == 1
        n
    else
        n * fact(n-1)
    end
end
println(fact(100))
python程序返回一个非常大的数字,用于评估100(如预期的那样).Julia返回0.使用较小的数字(如10)它们都可以工作.
我有两个问题:
我这些天正在学习Python,这可能是我关于Python的第一篇文章.我对R也相对较新,并且已经使用R大约一年了.我在学习Python时比较两种语言.如果这个问题太基础,我道歉.
我不确定为什么py输出Inf的R输出没有.我们2^1500以此为例.
在R:
nchar(2^1500)
[1] 3
2^1500
[1] Inf
在Python中:
len(str(2**1500))
Out[7]: 452
2**1500
Out[8]: 3507466211043403874...
我有两个问题:
a)Inf当Python没有时,为什么R提供.
b)我研究了如何在R中使用大数?线.这似乎Brobdingnag可以帮助我们解决大量问题.但是,即使在这种情况下,我也无法计算nchar.如何计算上面的表达式,即R中的2 ^ 1500
2^Brobdingnag::as.brob(500)
[1] +exp(346.57)
> nchar(2^Brobdingnag::as.brob(500))
Error in nchar(2^Brobdingnag::as.brob(500)) : 
  no method for coercing this S4 class to a vector
可能重复:
在Python中处理非常大的数字
我有一个python函数来生成斐波纳契数:
def fib(n):                                                                                                            
        return ((1+math.sqrt(5))**n - (1-math.sqrt(5))**n)/(2**n*math.sqrt(5))
我可以提供最多700的fib功能数字,它开始
OverflowError: (34, 'Numerical result out of range')
我是否需要使用特殊类型来解决这个问题?
从这个问题(How big can a 64bitsigned integer be?),我了解到在 64 位机器上可以使用的最大数字是2^64-1,即92,233,720,368,547,758,070。这意味着,即使我添加1它,它也应该返回inf. 但它没有显示inf。这是我观察到的:
>>> max = sys.maxsize
>>> format(max, ',')
'9,223,372,036,854,775,807'
>>> a = max * 10
>>> format(a, ',')
'92,233,720,368,547,758,070'
>>> a / max
10.0
即使由于某种原因92,233,720,368,547,758,070不是Python的最大数字,那么 又有什么用呢sys.maxsize?
其次,64位的数字不应该占用64位的内存空间吗?为什么 和max都a服用36 bytes?
>>> sys.getsizeof(max)
36
>>> sys.getsizeof(a)
36
谁能描述一下这两种混乱吗?
问题:当我使用Python时,看看计算机何时在数学计算中进行近似
问题示例:
我的老教师曾经说过以下陈述
You cannot never calculate 200! with your computer. 
我现在还不完全确定它是否真实.它似乎是,因为我从Python脚本得到了很多零.
你怎么知道你的Python代码何时进行近似?
我写了一个代码来输出字母'a'在列表的给定长度内重复的次数,它与长度小于1000000的输入完美配合,但没有长度大于1000000的输出。我非常感谢您的帮助。
代码:
n = int(input("Length: "))
s = list(input("String: "))
a = s
for i in s:
    if len(a) < n:
        a.append(i)
print(a.count("a"))
print(a)
例如,如果给出如下输入,则不会执行代码
Length: 100000000000000
String: abcasc
我还注意到,当该程序运行时打开/运行另一个应用程序时,我的计算机会死机。