Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- c#blob
- 파이썬
- frontend
- c# 엑셀추출
- blob다운로드오류
- sql풀이
- 프로그래머스SQL
- 취업코데
- 코테유형
- sql
- 코딩테스트
- blob파일업로드
- mysql
- asp.net
- C#
- 프로그래머스
- 파이썬백준
- blob파일다운로드
- 알고리즘
- export to excel
- queryasync
- 로컬포트번호
- 코딩테스트유형
- 코테
- 투포인터예제
- BLOB
- blobcontainer
- 프로그래머스MYSQL
- sql server 포트번호
Archives
- Today
- Total
개발새발
Python(파이썬) round 함수 반올림 오류 해결, format 반올림, 0.5 반올림 본문
내가 계속 까먹어서 기록해 놓는 파이썬 소숫점 표현방법!
알고리즘 문제를 풀다보면 대부분 반올림을 써야하는데 익히 알고 있는 round를 쉽게 쓴다.
하지만 round에는 큰 허점이 있어서 다른 방법을 사용해야 하는데 아직은 사용할 때마다 긴가민가 하다...
1. 반올림, 올림, 내림
일반적인 반올림에는 round
를 사용한다.
올림과 내림의 경우 ceil(올림)
, floor(내림)
을 사용한다.
round(1.234, 2) # 반올림, 소숫점 2번째 자리까지 표시(1.23)
import math
math.ceil # 올림
math.floor # 내림
2. round 함수의 문제점
하지만 round 함수의 경우 자릿수를 표시해주는 '0'에 대해서는 문제가 발생한다.
print(round(1.000, 2)) # 1.00이 아닌 1.0이 출력
0.5의 반올림(올림과 내림의 차이가 동일한 경우)에서 짝수 값으로 반올림한다.
print(round(1.5)) # 2
print(round(2.5)) # 2
3. round 대신 format
format을 사용하면 이런 문제를 해결할 수 있다.
{:.2f}
를 사용해 소숫점 아래 자릿수를 나타낼 수 있다.
print('{}'.format(1.000, 2)) # 1.0
print('{:.2f}'.format(1.000)) # 1.00
4. 0.5 반올림 하는 방법
0.5를 반올림 하기 위해서는 직접 함수를 만들거나 decimal
모듈을 사용하는 방법이 있다
함수
def roundUp(num):
if (num - int(num)) >= 0.5:
return int(num) + 1
else:
int(num)
print(roundUp(2.5)) # 3
Decimal
import decimal
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP
print(round(decimal.Decimal('2.5'), 0)) # 3
'코딩테스트 > Python' 카테고리의 다른 글
자주 헷갈리는 Python 문법, 내장함수 사용법 (1) | 2024.06.19 |
---|
Comments