올림, 반올림, 내림, 버림

CHOI YUN HO·2021년 4월 30일
0

나만의 노트

목록 보기
4/6
post-thumbnail

파이썬으로 알고리즘을 풀다가 문득 라이브러리 함수를 사용하지 않고 구현하는 방법을 생각해봤다.

올림

import math

math.ceil(3.4) # 4
math.ceil(-3.4) # -3

위와 같이 math의 ceil을 사용하여 올림을 할 수 있다.

그런데 나눗셈에서 몫을 올림하고 싶을 때 굳이 ceil을 쓰지않고

-(-17//5) # 4

위와 같이 구현할 수 있다.

이는 파이썬에서 // 연산자가 버림이 아닌 내림인 점을 이용하는 것인데,
17//5를 하면 3, -17//5는 -4이다.
그래서 음수로 변환 후 나눗셈을 하고 다시 -을 붙여주면 올림이 된다.

반올림

round(3.444) # 3
round(3.464, 1) # 3.5
round(3.464, 2) # 3.46
round(34.4, -1) # 30.0
round(36.4, -1) # 40.0

위와 같이 round(수, 자릿수)를 이용해서 반올림을 할 수 있다.

round를 쓰지 않고 반올림을 하는 방법에 대해 생각해보았는데,
좋은 방법인지는 딱히 모르겠으나 일단 메모해놔야겠다.

54321을 백의 자리에서 반올림해서 54000의 결과를 얻고 싶을 때,
각 자릿수의 수를 구해서

5 * 10000 + 4 * 1000 + (3 >= 5) * 1000

이렇게 계산을 하면 (3 >= 5)가 참일 때는 1, 거짓일 때는 0이 반환되면서 반올림이 된다.

내림

import math

math.floor(3.4) # 3
math.floor(-3.4) # -4

버림

import math

math.trunc(3.4) # 3
math.trunc(-3.4) # -3
profile
가재같은 사람

0개의 댓글