首页 > 解决方案 > 整数的十进制表示小于整数本身?

问题描述

在python中,为什么相同数字的十进制表示在内存中占用更少的空间(几乎一半)?

sys.getsizeof(1234561111111111111111111111111111111111111112223567744.0)
24
sys.getsizeof(1234561111111111111111111111111111111111111112223567744)
48

标签: pythonpython-3.xpython-2.7memory

解决方案


这不是 Python 2.7 特有的,你会在 Python 3 中得到相同的结果。

您的两个数字不一样:第一个是浮点数,它将存储为浮点数(因此四舍五入),并且无论其值如何(在浮点数的允许范围内)都将使用相同的字节数:

a = 1234561111111111111111111111111111111111111112223567744.0
>>> a
1.2345611111111112e+54

而第二个是整数,将以无限精度存储(保留所有数字):

b = 1234561111111111111111111111111111111111111112223567744
>>> b
1234561111111111111111111111111111111111111112223567744

存储它所需的大小将随着位数无限增长。


推荐阅读