C++中不同类型的数字有自己不同的边界和范围,Python中呢?如何判断边界问题?
最大最小整数
C++
1 | int minInt = 0x80000000; |
Python
1 | minInt = -0xffffffff |
Python中int大小为24个字节,数字太大时不会越界,会变为long类型,long类型的字节占位可以非常大(24以下为int,之后为long,分别可以为36,44,52,60等,每次8位递加?),不会越界
- 测试:当一个数字太大时,使用int(a)强制字符转换也不能将数字转换为int类型,将一直为long类型
- 测试: Python中24个字节存储一个int类型对象,但是并不是所有空间都存值,只有一部分用来存储数值
1
2
3
4
5
6
7
8
9
10MinInt = int(0x80000000000000000)
print MinInt
import sys
print sys.getsizeof(MinInt)
print type(int(MinInt))
# output:
147573952589676412928
36
<type 'long'>
Python中定义最小负数时可以使用float最小值或者是很大的整数的负数,而不是像C++一样
最大最小浮点数
Python
1 | minFloat = float("-inf") |