본문 바로가기
프로그래밍 언어 & 데이터베이스/Python

파이썬 사칙연산

by ♥︎해이나♥︎ 2021. 5. 24.
반응형

파이썬으로 숫자놀이를 해 보자!

 

 

먼저 정수끼리 덧셈, 뺄셈, 곱셈, 나머지값, 거듭제곱을 해 보았다. (나눗셈에는 예외 상황이 있어 아래에 따로 설명...)

 

print(1 + 1) # 1과 1을 더하라, 결과값 2
print(3 - 5) # 3에서 5를 빼라, 결과값 -2
print(2 * 6) # 2와 6을 곱해라, 결과값 12
print(24 % 5) # 24를 5로 나눈 나머지값을 구해라, 결과값 4 
print(3 ** 3) # 3을 3번 곱해라(거듭제곱), 결과값 27

 

파이썬에서는 정수끼리 사칙연산을 하면 결과값도 정수형이 나온다. 그렇다면 소수끼리 하면?

 

print(1.0 + 1.0) # 결과값 2.0
print(3.0 ** 3.0) # 결과값 27.0

 

결과값도 소수로 표시되는 것을 확인할 수 있었다. (궁금증은 꼬리에 꼬리를 물고~) 하나는 정수, 하나는 소수라면 어떨까?

 

print(2.06 * 3) # 결과값 6.18
print(3.3 - 1.3) #결과값 1.999999 왜지?
print(6.7 - 3) # 결과값 3.7

 

둘 중에 하나라도 소수가 포함되어 있다면 결과값은 소수로 나온다. 이것저것 해 보다가 3.3 - 1.3 이 2도 아니고 2.0도 아닌 1.9999999....가 나와서 엄청 당황했다. 찾아보니 부동소수점인가 뭔가 때문인 것 같은데 나도 아직 이해를 못했으므로 설명 불가 OTL 아래에 관련 링크를 첨부한다. 내가 아래 내용을 모두 이해하게 된다면 블로그에 최대한 쉽게 설명해 보도록 하겠다. (그 날이 올까...ㅜㅜ)

 

https://blog.winterjung.dev/2020/01/06/floating-point-in-python

 

파이썬에서 부동소수점 오차 해결하기

실수형 값을 다룰 때 흔히 마주칠 수 있는 부동소수점 오차 문제를 파이썬에서 어떻게 해결할 수 있는지 알아보았다. 이 글은 2017년에 작성했던 글을 다듬고 내용을 추가해 다시 작성한 글입니

blog.winterjung.dev


자, 이제 다시 사칙연산으로 돌아와서... 나눗셈을 해보자!

 

print(6 / 3) # 결과값 2.0
print(7 / 2) # 결과값 3.5
print(6.0 / 2) # 결과값 3.0
print(9.0 / 2) # 결과값 4.5

 

나눗셈은 예외적으로 사용된 숫자가 정수든 소스든 상관없이 무조건 소수로 표시된다. 만약 나눈 결과값에서 소수 부분을 버리고 정수로만 표시하고 싶다면? 버림 나눗셈(//)을 이용하면 된다. 나눈 결과값에서 소수 부분을 버린다는 의미이다. 영어로는 floor division 이라고 한다.

 

print(9 / 2) # 결과값 4.5
print(9 // 2) # 나눈 결과값에서 소수 부분을 버리자, 결과값 4
print(8 / 3) # 결과값 2.6666666
print(8 // 3) # 결과값 2

 

버림 나눗셈에서 추가로 알아두어야 할 것! 

 

print(9.0 // 3) # 결과값 3.0
print(9.0 // 2) # 결과값 4.0
print(9 // 3.0) # 결과값 3.0
print(8 // 2.0) # 결과값 4.0


둘 중에 하나라도 소수가 사용되었으면 결과값이 소수로 표시된다. 소수 부분을 이미 버렸기 때문에 무조건 x.0 으로 표시된다. 그렇다면 이번에는 2개 이상의 연산이 한꺼번에 들어간 경우를 보도록 하겠다. 

 

print(2 + 3 * 2) # 곱하기 먼저 계산됨, 결과값 8 
print((3 + 2) * 5) # 괄호 안부터 먼저 계산됨, 결과값 25

 

일반 사칙연산 규칙이 그대로 적용되어 더하기, 빼기보다는 곱하기, 나누기가 먼저 계산된다. 괄호()가 있다면 괄호 안을 먼저 계산한다. 마지막으로 반올림(round)도 해 보았다.

print(round(2.1502626)) # 괄호 안의 숫자를 반올림해라, 결과값 2
print(round(2.1502626, 2)) # 괄호 안의 숫자를 소수점 2번째 자리까지 반올림해라,  결과값 2.15 

 

반올림의 경우에도 부동소수점으로 인해 예외상황이 발생하는데, 위 링크를 참고하면 도움이 될 것이다. 개인적으로는 기본적인 덧셈, 뺄셈 등은 원래 알고 있던 것들이고, 거듭제곱(**), 버림나눗셈(//), 반올림(round)은 추가로 암기해야 한다. 벌써 헷갈리면 안 되는데...😅 화이팅이다.

반응형

댓글