MoonNote

반응형
     

 

 

 

모든 프로그래밍 언어가 그렇듯 파이썬의 기본 데이터 타입 역시 ¹숫자형, ²문자열, ³불리언 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))

 

더보기

num1 data type
<class 'int'>

num2 data type
<class 'float'>

 

 

디스플레이 포맷(Display Format)

숫자형의 데이터 값은 보통 10진수 형태로 표현을 하지만 2진수, 8진수, 16진수의 형태로도 표현하기도 합니다. 데이터 값 앞에 2진수는 '0b'로 표현하고, 8진수는 '0o', 16진수는 '0x'로 데이터 포맷을 지정합니다.

2진수(Binary), 8진수(Octal), 10진수(Decimal), 16진수(Hexadecimal)&nbsp;데이터 예시

 

아래 테이블표는 각 포맷별 데이터 예시입니다.

2진수(Binary), 8진수(Octal), 10진수(Decimal), 16진수(Hexadecimal) 데이터 예시

 

반대로 데이터 값 출력을 2진수로 표현하고자 한다면 bin(), 8진수는 oct(), 16진수는 hex()를 사용합니다. Data 변수에 15라는 값을 적용하고 각각의 포맷별로 출력한 예시입니다.

출력 값 2진수(Binary), 8진수(Octal), 10진수(Decimal), 16진수(Hexadecimal) 표현 예시
더보기

0b1111
0o17
15
0xf

 

산술 연산자(Arithmetic Operators)

숫자형 데이터가 있으면 당연히 산술 연산을 해야하는 경우들이 있겠죠? Python에서 사용되는 산술 연산 기호들을 테이블 표로 정리해 보았습니다. 아마 대부분 아시는 것들 일꺼라 생각이 들고 지수(Exponent)만 '**'로 표현한다고 알아두시면 될 듯 하네요.

연산 기호

 

무한 소수(Infinite Decimal)

우리는 일상에서 0.5, 3.14, 12.75처럼 소수(decimal)를 자주 사용합니다.
그런데 어떤 수는 소수점 아래 숫자가 끝없이 이어지는 경우가 있습니다. 이를 무한 소수(Infinite Decimal) 라고 합니다. 파이썬에서는 크게 순환 소수(Repeating Decimal), 무리수(Irational Number)로 나뉩니다. 아래 코드들이 각각의 예시입니다.

 

순환 소수 (Repeating Decimal) : 특정 숫자 패턴이 반복되는 소수

print(1/3)		#0.333333...
print(1/6)		#0.166666...
print(1/11)		#0.090909...

 

더보기

0.3333333333333333
0.16666666666666666
0.09090909090909091

무리수 (Irrational Number) : 반복 패턴 없이 끝없이 이어지는 소수

import math

print(math.pi)          #π (파이)
print(math.sqrt(2))     #√2
print(math.e)           #e

 

더보기

3.141592653589793
1.4142135623730951
2.718281828459045

 

 파이썬에서 해당 내용을 다루고 있지만 보통 프로그래밍 언어에서 처리하는 데이터는 PC 메모리에 저장되게 되는데, 메모리 자원 역시 한정적이기 때문에 이를 효율적으로 관리하도록 설계되어야한다고 보시면 좋을 듯합니다. 그렇기에 프로그래밍 언어의 공통 사항으로 생각하시면 되겠습니다. 파이썬에서는 위의 예시처럼 부동 소수점 방식으로 처리하며 일정 자리까지만 근사값(Approximation)으로 표현합니다.

 

부동소수점 오차(Floating Point Error)

파이썬에서 부동소수점 방식으로 데이터를 처리할 때 발생하는 유명한 문제입니다. 0.1, 0.2 두 소수점을 합산해보면 0.3이 아닌  0.30000000000000004가 출력됩니다.

 

print(0.1 + 0.2)

 

더보기

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)

 

 

 

 

 

 

 

 

※ 이 글이 도움이 되었다면 "👆🏻구독"과 "🤍공감" 버튼을 클릭해주세요. 클릭 한번이 글 쓰는데 큰 힘이 됩니다.

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band