파이썬 숫자형 함수 다루기

파이썬 숫자형 함수 다루기

숫자형 함수(Math Functions)

파이썬에서는 숫자를 다룰 때 사용할 수 있는 내장된 함수를 제공한다.

대표적인 세 가지 함수는 다음과 같다.
  1. round() - 소수점 이하의 자릿수를 반올림한다.
  2. abs() - 숫자의 절대값을 얻는다.
  3. pow() - 특정 수를 거듭제곱한다.

round() 함수

round() 함수를 사용하여 가장 가까운 정수로 반올림을 할 수 있다.

>>> round(2.3)
2

>>> round(2.7)
3

round() 함수는 가끔씩 숫자가 .5로 끝날 때 예상치 못한 행동을 취한다.

>>> round(2.5)
2

>>> round(3.5)
4

위 예제와 같이 2.5는 2로 반내림되고 3.5는 4로 반올림이 되었다. 파이썬3에서는 숫자를 반올림하는데 rounding ties to even이라는 전략을 사용한다. 여기서 tie2.53.1415처럼 마지막 자릿수가 5로 끝나는 모든 숫자를 말한다.

반올림을 할 때 소수점 앞에 수가 짝수면 반내림 되고 숫자가 홀수면 반올림 된다. 그렇기 때문에 2.5는 2로, 3.5는 4가 되는 것이다.

>>> round(32.5)
32

>>> round(33.5)
33

round() 함수를 사용할 때, 두 번째 인자를 전달함으로써 주어진 소수점 위치의 반올림을 할 수도 있다.

>>> round(3.14159, 3)
3.142

>>> round(2.71828, 2)
2.72

두 번째 인자는 반드시 정수여야 한다.

>>> round(2.65, 1.4)
Traceback (most recent call last):
	File "<pyshell#0>", line 1, in <module>
    	round(2.65, 1.4)
TypeError: 'float' object cannot be interpreted as an integer

abs() 함수

숫자 n의 절대값은 n이 양수이면 n이고 음수이면 -n이다. 예를 들어 3의 절대값은 3이지만, -5의 절대값은 5이다.

파이썬에서 숫자의 절대값을 얻기 위해서 abs() 함수를 사용할 수 있다.

>>> abs(3)
3
>>> abs(-5.0)
5.0

pow() 함수

pow() 함수도 ** 연산자처럼 숫자를 거듭제곱하기 위해 사용할 수 있다. pow() 함수는 두 인자를 취하는데, 첫 번째는 밑(base), 바로 거듭제곱 될 수이고, 두 번째는 지수(exponent)이다.

>>> pow(2, 3)
8

** 연산자처럼, pow() 함수 안의 지수도 음수가 될 수 있다.

>>> pow(2, -2)
0.25

그렇다면 ** 연산자와 pow() 함수의 차이점은 무엇일까? 바로 pow() 함수는 선택적인 세 번째 인자를 받는다는 것인데, 즉, 처음 숫자를 두 번째 지수만큼 거듭제곱하고, 그 결과를 주어진 수 만큼 버림나눗셈(modulo)하여 최종적으로 값을 반환한다.

즉, pow(x, y, z)(x ** y) % z와 동일하다.

>>> pow(2, 3, 2)
0

첫 번째로, 숫자 2가 지수 3만큼 거듭제곱되어 8이 되었다. 그리고 나서, 8 % 2가 계산되고 나머지가 없기 때문에 최종적으로 0이 반환된다.

Reference