python - 整数的十进制表示小于整数本身?
问题描述
在python中,为什么相同数字的十进制表示在内存中占用更少的空间(几乎一半)?
sys.getsizeof(1234561111111111111111111111111111111111111112223567744.0)
24
sys.getsizeof(1234561111111111111111111111111111111111111112223567744)
48
解决方案
这不是 Python 2.7 特有的,你会在 Python 3 中得到相同的结果。
您的两个数字不一样:第一个是浮点数,它将存储为浮点数(因此四舍五入),并且无论其值如何(在浮点数的允许范围内)都将使用相同的字节数:
a = 1234561111111111111111111111111111111111111112223567744.0
>>> a
1.2345611111111112e+54
而第二个是整数,将以无限精度存储(保留所有数字):
b = 1234561111111111111111111111111111111111111112223567744
>>> b
1234561111111111111111111111111111111111111112223567744
存储它所需的大小将随着位数无限增长。