수 자료형(Number)
수 자료형은 가장 기본적인 자료형이며 데이터는 모두 수(Number)로 표현할 수 있습니다
대부분의 프로그램에서는 정수, 실수가 많이 사용되지만, 그중에서도 정수를 기본으로 사용합니다
파이썬에서는 크게 숫자를 두 가지 자료형(데이터 타입)으로 구분하는데
소수점이 없는 숫자를 정수형(int), 소수점이 있는 숫자를 실수형(float)으로
두 가지 자료형(데이터 타입)으로 구분합니다
정수형(integer)
정수를 다루는 자료형이며 양의 정수, 음의 정수 0 이 있습니다
a = 6 # 양의 정수
print(a) # 6
a = -7 # 음의 정수
print(a) # -7
a = 0 # 0
print(a) # 0
실수형(Real Number)
소수점 아래의 데이터를 포함하는 수이며 변수에 소수점을 붙인 수를 대입하면 실수형 변수로 처리합니다
a = 3.14 # 양의 실수
print(a) # 3.14
a = -3.14 # 음의 실수
print(a) # -3.14
a = 6. # 소수부분이 0일 때 0을 생략할 수 있다
print(a) # 6.0
a = -.7 # 정수부분이 0일 때 0을 생략할 수 있다
print(a) # -0.7
추가로 실수형 데이터를 표현하는 방식으로 e나 E를 사용해 지수 표현을 할 수 있습니다 (코테에서 자주쓴다)
a = 1e9 # 10억의 지수 표현 방식
print(a) # 100000000.0
a = 3.14e1 # 31.4
print(a)
a = 1234e-3 # 1.234
print(a)
* 컴퓨터는 실수를 정확하게 표현하지 못한다 *
보통 컴퓨터 시스템은 수 데이터를 처리할 때 2진수를 사용해 계산합니다
그렇다면 컴퓨터가 실수(float) 데이터를 처리할때는?
부동 소수점 방식을 이용해 고정된 4바이트 or 8바이트의 메모리를 할당해 계산합니다, 이러한 실수 데이터의 연산 중 반올림 오차(rounding error)가 발생할 수 있으며, 특히 계산이 반복되거나 연속적으로 이루어지는 경우에는 오차가 누적되게 됩니다
(= 실수 정보를 표현하는 정확도에 한계가 있다!)
a = 0.1 + 0.2 # 0.30000000000000004
print(a)
a = 0.3 + 0.6 # 0.8999999999999999
print(a)
이러한 문제를 해결하고 싶다면 round() 함수를 이용하면 됩니다,
보통의 코딩테스트 문제에서는 실수형 데이터 타입을 비교할 때
소수점 다섯 번째 자리에서 반올림한 결과가 같으면 정답으로 인정하는 식으로 처리하곤 합니다
a = 0.3 + 0.6
print(round(a, 4)) # 5번째 자리에서 반올림, 0.9
# round('실수형 데이터', 반올림하고자 하는 위치 -1)