모든 프로그래밍 언어가 그렇듯 파이썬의 기본 데이터 타입 역시 ¹숫자형, ²문자열, ³불리언 3가지입니다. 이 밖에도 파이썬에는 리스트(list), 튜플(tuple), 집합(set), 딕셔너리(dict) 등의 타입들이 있으며 기본 데이터 타입 후 포스팅에서 자세히 다루어보도록 하겠습니다.
숫자형(Numeric)
우리가 흔히 많이 사용하는 10진수 1, 2, 3, ..., 15, 16 등의 데이터 타입을 말합니다. 숫자형의 데이터 타입은 크게정수형과 실수형으로 나뉘어지게 되는데요. 정수형은 소수점이 없는 타입, 실수형은 소수점 표현까지 하는 데이터 타입이라고 보시면 되겠습니다. 아래는 type()를 이용하여 변수의 정수형과 실수형 타입을 체크해본 예시 코드입니다. (정수형 : int, 실수형 :Float)
num1 = 100
num2 = 100.00
print('num1 data type')
print(type(num1))
print()
print('num2 data type')
print(type(num2))
숫자형 데이터가 있으면 당연히 산술 연산을 해야하는 경우들이 있겠죠? Python에서 사용되는 산술 연산 기호들을 테이블 표로 정리해 보았습니다. 아마 대부분 아시는 것들 일꺼라 생각이 들고 지수(Exponent)만 '**'로 표현한다고 알아두시면 될 듯 하네요.
연산 기호
무한 소수(Infinite Decimal)
우리는 일상에서 0.5, 3.14, 12.75처럼 소수(decimal)를 자주 사용합니다. 그런데 어떤 수는 소수점 아래 숫자가 끝없이 이어지는 경우가 있습니다. 이를 무한 소수(Infinite Decimal) 라고 합니다. 파이썬에서는 크게 순환 소수(Repeating Decimal), 무리수(Irational Number)로 나뉩니다. 아래 코드들이 각각의 예시입니다.
파이썬에서 해당 내용을 다루고 있지만 보통 프로그래밍 언어에서 처리하는 데이터는 PC 메모리에 저장되게 되는데, 메모리 자원 역시 한정적이기 때문에 이를 효율적으로 관리하도록 설계되어야한다고 보시면 좋을 듯합니다. 그렇기에 프로그래밍 언어의 공통 사항으로 생각하시면 되겠습니다. 파이썬에서는 위의 예시처럼 부동 소수점 방식으로 처리하며 일정 자리까지만 근사값(Approximation)으로 표현합니다.
부동소수점 오차(Floating Point Error)
파이썬에서 부동소수점 방식으로 데이터를 처리할 때 발생하는 유명한 문제입니다. 0.1, 0.2 두 소수점을 합산해보면 0.3이 아닌 0.30000000000000004가 출력됩니다.
"왜 이런 일이 발생할까?" 생각해보았을 때 PC가 인지하는 기계어의 경우 2진수(Binary)로 데이터를 인지하는데 0.1과 같은 숫자는 2진수로 정확하게 표현되지 않기 때문입니다. 이러한 오차를 줄이기 위해 반올림(Round) 또는 10진수(Decimal) 함수를 통해 정확한 값을 계산하는 방법을 많이 사용하고 있으니 참고하시면 좋을 듯 합니다.
방법1: Round 사용
result = 0.1 + 0.2
print(round(result, 1))
방법2: Decimal 사용
from decimal import Decimal
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)
※ 이 글이 도움이 되었다면 "👆🏻구독"과 "🤍공감" 버튼을 클릭해주세요. 클릭 한번이 글 쓰는데 큰 힘이 됩니다.