728x90
반응형
일반적으로 python을 사용할때 올림을 구현해야할 일이 있으면 math 모듈을 import 해서 사용하지만, 간단한 방법으로 구현할 수 있다.
올림
a = 7
b = 4
result = -(-a//b)
print(result) # 2
위와 같이 음수에서의 나눗셈의 성질을 이용하면 따로 math 모듈을 사용하지 않아도 올림을 구현할 수 있다. 나눗셈에서는 나머지가 항상 양수여야하기 때문에 이렇게 연산이 진행된다.
내림
a = 7
b = 4
result = a/b
print(int(result)) # 1
내림은 많이 사용하는 int()를 사용하면 된다. int 함수는 float 형을 변환할 때 정수 부분만 취하기 때문에, 나머지 소수 부분은 버려버린다.
반올림
print(round(1.5)) # 2
print(round(2.5)) # 2
print(round(3.5)) # 4
print(round(4.5)) # 4
print(round(5.5)) # 6
반올림은 python 내장함수인 round()를 많이 사용하는데, round는 오사오입의 원칙을 따르기 때문에 위와 같은 결과가 나온다. 오사오입의 원칙이란, 5 미만의 숫자는 버림하고 5 초과의 숫자는 올림하되, 5의 경우에는 5의 앞자리가 홀수인 경우엔 올림을 하고 짝수인 경우엔 버림을 하여 짝수로 만들어주는 법칙이다. 사사오입 법칙보다 오차가 적어서 이공계에서 많이 쓰인다고 한다.
한마디로 python의 round() 함수는 우리가 일반적으로 생각하는 반올림이랑 다르기 때문에 반올림은 아래와 같이 구현하는것이 훨씬 직관적이고 좋다.
a = 1.5
b = 2.3
c = 2.7
print(int(a+0.5)) # 2
print(int(b+0.5)) # 2
print(int(c+0.5)) # 3
그냥 고전적 방법으로 +0.5 해주고 내림 해주는게 훨씬 편한것 같다. 음수의 경우에는 0.5를 더해주는것이 아닌 빼줘야하기 때문에, 아래와 같이 구현해줘야 한다.
a = -0.7
print(int(a+0.5) if a>0 else int(a-0.5)) # -1
728x90
반응형
'BOJ > 이론' 카테고리의 다른 글
중국인의 나머지 정리(Chinese Remainder Theorem, CRT) (0) | 2024.09.29 |
---|---|
Extended Euclidean Algorithm (확장된 유클리드 호제법) (0) | 2024.09.23 |
조합(Combination)과 이항 계수를 python으로 구현해보자. (0) | 2024.07.20 |
유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기 (0) | 2024.07.18 |