Python/파이썬 문법

[파이썬 문법] 수 자료형

서노리 2021. 12. 24. 03:50
반응형

수 자료형

- 정수형(Integer)

정수를 다루는 자료형이며 정수형에는 양의 정수, 음의 정수, 0이 있다. 코딩 테스트에서 출제되는 알고리즘 문제는 대부분 입력과 출력 데이터가 정수형이다.

a = 1000 # 양의 정수
print(a)

a = -7 # 음의 정수
print(a)

# 0
a = 0
print(a)

- 실수형(Real Number)

소수점 아래의 데이터를 포함하는 수 자료형으로 파이썬에서는 변수에 소수점을 붙인 후 대입하면 실수형 변수로 처리한다.

소수부가 0이거나, 정수부가 0인 소수는 0을 생략하고 작성 할 수 있다.

# 양의 실수
a = 157.93
print(a)

# 음의 실수
a = -18.5
print(a)

# 소수부가 0일 때 0 생략
a = 5.
print(a)

# 정수부가 0일 때 0 생략
a = -.8
print(a)

실수형의 지수 표현 방식

실수형 데이터를 표현하는 방식으로 파이썬에서는 e를 이용한 지수 표현 방식을 이용할 수 있다.

e 다음에 오는 수는 10의 지수부를 의미한다. 예를 들어 1e9라고 입력하게 되면 10의 9승이 된다.

지수 표현 방식은 코딩 테스트에서 많이 사용되는데 큰 수를 다룰 때 0의 개수가 많아지면 자릴수가 헷갈리는 경우가 많기 때문에 10억을 1,000,000,000라고 표현하는 것보다 1e9로 표현하는 것이 실수를 줄일 수 있다.

 

컴퓨터의 실수 처리 방식

컴퓨터 시스템은 실수를 처리할 때 부동 소수점 방식을 이용한다. 이는 실수형을 저장하기 위해 4바이트나 8바이트라는 고정된 크기의 메모리를 할당하기 때문에 대체로 실수 정보를 표현하는 정확도에 한계를 가진다. 예를 들어 10진수 체계에서는 0.3 + 0.6을 더한 값이 0.9로 정확히 떨어지지만, 2진수에서는 0.9를 정확히 표현할 수 있는 방법이 없다. 즉 최대한 0.9에 가깝게 표현하지만 표현한 값이 정확히 0.9가 아닌 미세한 오차가 발생한다. 다음 코드에서 그 예시를 확인해볼 수 있다.

a = 0.3 + 0.6
print(a)

if(a == 0.9):
  print(True)
else:
  print(False)

위 코드의 결과이다.

 

따라서 소수점 값을 비교하는 작업이 필요한 문제라면 실수 값을 비교하지 못해서 원하는 결과를 얻지 못할 수 있다. 

이럴 때는 round() 함수를 이용할 수 있다. round() 함수의 첫 번째 인자는 실수형 데이터이고, 두 번째 인자는 반올림하고자 하는 위치 - 1 이다. 예를 들어 123.456을 소수점 셋째 자리에서 반올림하려면 round(123.456, 2)라고 작성하면 123.46을 얻을 수 있다.

따라서 위에서 해결하지 못한 문제를 round() 함수를 통해 해결할 수 있다.

a = 0.3 + 0.6
print(round(a,4))

if(round(a,4) == 0.9):
  print(True)
else:
  print(False)

 

수 자료형의 연산

파이썬에서는 나누기 연산자(/)를 주의해서 사용해야한다. 다른 언어와 다르게 파이썬에서 나누기 연산자(/)는 나눠진 결과를 기본적으로 실수형으로 처리한다. 나머지를 나타낼 때는 나머지 연산자(%)을 사용하고 몫을 나타낼 때는 몫 연산자(//)를 사용한다.

a = 7
b = 3

# 나누기
print(a/b)

# 나머지
print(a%b)

# 몫
print(a//b)

또한 거듭제곱 연산자(**) 등 다양한 연산자들이 파이썬에는 존재한다.


참고자료: 이것이 취업을 위한 코딩 테스트다 with 파이썬 - 나동빈 지음(한빛미디어)

 

반응형