2015년 4월 16일 목요일

파이썬의 산술 연산자

 파이썬의 산술 연산자는 다음과 같은 것들이 있다.

[표 1] 파이썬의 산술 연산자들
연산자
기능
비고/용례
+
덧셈
11+22, a+12, a+b
-
뺄셈
11-22j - 33, a-12, a-b
*
곱셈
11*22, (33+44j)*(55-66j), a*b
/
나눗셈
결과는 실수형이다. (2.x에서는 int / int의 결과는 int)
//
자리내림 나눗셈
피연산자가 모두 정수인 경우 나눗셈의 결과 소수점 아래는 버리고 정수만 취한다.
둘 중 하나라도 실수라면 / 연산자와 동일함.
**
거듭제곱
2**10, (1+2j)**20
%
나머지
3%4, -10%3, 12.345%0.4

여기서 나눗셈의 경우 버전에 따라서 결과가 다르다. 2.x버전에서는 정수간 나눗셈의 결과는 정수였다. 즉 1/2는 0, 2/3은 1이다. 하지만 3.x버전에서는 정수간 나눗셈의 결과는 나누어 떨어지는 경우라도 무조건 실수형이 된다. 즉, 1/2는 0.2, 6/3은 2.0이 된다. 다음 결과를 확인해 보자.

>>> 4/5
>>> a,b = 11,5 #a에 11, b에 5를 대입한다.
>>> b/a

2.x버전에서는 정수끼리의 나눗셈의 결과는 정수라는 것에 유의해야 한다.

 연산자 //는 두 피연산자가 모두 정수일 경우 결과값이 실수이면 소수점 아래는 버린다.

>>> 9//2 # 결과는 4 (정수)
>>> 9//2.0 # 결과는 4.5(실수)

 연산자 %는 나눗셈 수행 후 정수몫을 구하고 난 나머지를 구하는 연산자이다. 다음을 확인해보라.

>>> 3%2
1
>>> 11.5%0.2
0.09999999999999937
>>> 11.5%0.3
0.10000000000000042

실수 연산의 경우는 결과값이 정확하지 않을 수도 있다.

 연산자 **는 거듭제곱 연산자이다. 다음 연산의 예를 보자.

>>> 2**10
1024
>>> a,c = 3,4+5j
>>> c**a
(-236+115j)
>>> a**c
(57.00434317675227-57.54567628403595j)

위에서 복소수의 거듭제곱 c**a 는  (4+5j)*(4+5j)*(4+5j) 의 결과값을 보여준다. 파이썬에서는 복소수에 대한 산술 연산도 기본적으로 지원하므로 쉽게 수행할 수 있음을 알 수 있다.

---- (이하 생략 가능) --------------------------------------------------------------------------

 그렇다면 a**c는 왜 저런 결과가 나왔을까? 다음과 같이 오일러(Euler)공식을 이용하면 된다.


이 식의 결과와 위 예제의 결과는 동일하다.

댓글 없음:

댓글 쓰기