繁体   English   中英

为什么在进行溢出计算时我的 Python 会冻结?

[英]Why does my Python freeze when I do an overflow calculation?

我是一名 MATLAB 用户,试图理解 Python 很抱歉,如果这很明显。

如果我说

print(9**9)

我得到:387420489

伟大的。

如果我说print(9**9**9) Python 只是无限期地坐在那里并冻结(我使用 Spyder 版本 4)。 Ctrl-C 不会阻止它。 为什么它不立即返回 Inf? 这是预期的行为吗?

在使用整数进行数值计算时,python不限于机器特定的数字,例如“int32”,因此“2147483647”这样的数字对其意义不大。 相反,它使用一个“大整数”库,原则上它可以表达任何大数,只要有足够的 memory 即可。 当面对诸如9**9**9 python 之类的计算时,它会尝试准确地执行它,产生准确的结果,无论它有多大。 对于这个特定的计算,它只需要很多时间(以及 memory,大概在内部 python 正试图根据需要分配越来越多的 memory)。

num 9**9**9计算的很大
你可以等到它返回结果
可能需要很长时间

为什么在进行溢出计算时我的 Python 会冻结?

因为没有发生溢出并且 python 没有放弃。 Python 将扩展精度,直到计算成功或机器用完 memory。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM