在python中,为什么相同数字的十进制表示形式会占用较少的内存空间(几乎一半)?
sys.getsizeof(1234561111111111111111111111111111111111111112223567744.0)
24
sys.getsizeof(1234561111111111111111111111111111111111111112223567744)
48
答案 0 :(得分:2)
这并非特定于Python 2.7,与Python 3相同。
您的两个数字不相同:第一个是浮点数,将被存储为浮点数(并四舍五入),并且无论其值如何(在允许的浮点数范围内),都将使用相同数量的字节:
a = 1234561111111111111111111111111111111111111112223567744.0
>>> a
1.2345611111111112e+54
第二个是整数,它将以无限精度存储(所有数字都保留):
b = 1234561111111111111111111111111111111111111112223567744
>>> b
1234561111111111111111111111111111111111111112223567744
存储它所需的大小将无限制地增长。