파이썬의 산술 연산자는 다음과 같은 것들이 있다.
[표 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%21>>> 11.5%0.20.09999999999999937>>> 11.5%0.30.10000000000000042 |
실수 연산의 경우는 결과값이 정확하지 않을 수도 있다.
연산자 **는 거듭제곱 연산자이다. 다음 연산의 예를 보자.
>>> 2**101024>>> 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)공식을 이용하면 된다.
이 식의 결과와 위 예제의 결과는 동일하다.
댓글 없음:
댓글 쓰기