Python

[Python] Python에는 왜 long이 없을까?

torimuk 2022. 10. 18. 09:40

Problem


다른 언어에는 존재하는 long이 왜 Python에는 없을까?

 

Solution


기존 Python 2 버전의 경우 int와 long이 구분되어 있었다. int는 C스타일의 고정 정밀도였고, long은 임의 정밀도였다. Python 2.4부터 int가 충분하지 않을 경우 long으로 자동 변환하는 기능이 추가되어 오버플로우가 발생하지 않도록 변경되었다.

이후 Python 3에서 임의 정밀도의 int로 통합되었는데, 임의 정밀도는 무엇일까?

 

임의 정밀도는 쉽게 말해 무한대의 자릿수를 지원하는 정수형이다.

정수를 숫자의 배열로 취급하기 때문에 가능한데, 말그대로 정수를 자릿수로 쪼개어 2의 30승 진수로 표현한다.

ex) 123456789101112131415

(437976919 * 2**(30*0)) + (87719511 * 2**(30*1)) + (107 * 2**(30*2))
a = (437976919 * 2**(30*0))
b = (87719511 * 2**(30*1))
c = (107 * 2**(30*2))

print(a + b + c)

123456789101112131415

 

URL


(책)파이썬 알고리즘 인터뷰