作者:潇潇沐林风_921 | 来源:互联网 | 2022-12-05 19:13
我是Python的新手,我正在阅读这个页面,在那里我看到了一个奇怪的声明:
if n+1 == n: # catch a value like 1e300
raise OverflowError("n too large")
x等于大于它的数字?!我感觉到了原力的干扰.
我知道在Python 3中,整数没有固定的字节长度.因此,没有整数溢出,就像C的int
工作方式一样.但当然内存无法存储无限数据.
我认为这就是为什么结果n+1
可能是相同的n
:Python不能分配更多的内存来预先形成总和,所以它被跳过,并且n == n
是真的.那是对的吗?
如果是这样,这可能导致程序的错误结果.为什么Python不能在操作不可能时引发错误,就像C++一样std::bad_alloc
?
即使n
不是太大而且检查评估为假,result
- 由于乘法 - 将需要更多的字节.可能result *= factor
因同样的原因而失败?
我在官方Python文档中找到了它.这是检查大整数/可能整数"溢出"的正确方法吗?
1> harold..:
整数在Python中不起作用.
但浮动确实如此.这也是评论说的原因1e300
,这是科学记谱法中的一个浮点数.