Десятичное представление целого числа имеет меньший размер, чем само целое число? - PullRequest
0 голосов
/ 09 ноября 2019

В python, почему десятичное представление того же числа занимает меньше места в памяти (почти наполовину)?

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

1 Ответ

2 голосов
/ 09 ноября 2019

Это не относится к Python 2.7, вы получите то же самое с Python 3.

Ваши два числа не совпадают: первое - это число с плавающей точкой, которое будет сохранено как число с плавающей точкой (иокругляется) и будет использовать одинаковое количество байтов независимо от своего значения (в допустимом диапазоне для чисел с плавающей запятой):

a = 1234561111111111111111111111111111111111111112223567744.0
>>> a
1.2345611111111112e+54

, тогда как второй является целым числом, которое будет храниться с неограниченной точностью (всецифры сохраняются):

b = 1234561111111111111111111111111111111111111112223567744
>>> b
1234561111111111111111111111111111111111111112223567744

Размер, необходимый для его хранения, будет неограниченно увеличиваться с количеством цифр.

...