整数的小数表示比整数本身小吗?

时间:2019-11-09 17:18:24

标签: python python-3.x python-2.7 memory

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

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

1 个答案:

答案 0 :(得分:2)

这并非特定于Python 2.7,与Python 3相同。

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

a = 1234561111111111111111111111111111111111111112223567744.0
>>> a
1.2345611111111112e+54

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

b = 1234561111111111111111111111111111111111111112223567744
>>> b
1234561111111111111111111111111111111111111112223567744

存储它所需的大小将无限制地增长。