본문 바로가기
프로그래밍/Python

[Python] round 함수 : 반올림 (3) - 사사오입 반올림을 사용하는 방법

by 빛밤하늘 2021. 5. 23.
반응형

2021.05.13 - [프로그래밍/Python] - [Python] round 함수 : 반올림 (1) - 사용 방법

2021.05.15 - [프로그래밍/Python] - [Python] round 함수 : 반올림 (2) - 예상과는 다른 결과

 

[Python] round 함수 : 반올림 (2) - 예상과는 다른 결과

이전에 파이썬에서 반올림을 할 때 사용하는 함수 round에 대해 포스팅해봤습니다. 그런데, 이 round 함수는 우리가 일반적으로 알고 있는 결과와 다르게 나올 때가 있습니다. 다음은 우리가 알고

brightnightsky77.tistory.com

 

 

 

이전 포스팅에서는 우리가 알고 있는 반올림과는 다른 결과를 출력하는 파이썬의 round 함수에 대해서 알아봤습니다.

그런데 밑의 링크의 문제와 같이 파이썬의 round 함수에서 사용되는 오사오입 방식의 반올림이 아닌

우리가 일상생활에서 사용하는 사사오입 방식의 반올림 결과를 요구하는 문제들도 있습니다.

 

[백준][solved.ac][Silver 4][Python] 18110번 : solved.ac

밑의 링크는 백준에서의 문제 링크입니다. 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고

brightnightsky77.tistory.com

 

 

 

이번에는 우리가 알고 있는 반올림인 사사오입 방식의 반올림을 파이썬에서 구현하는 방법에 알아보겠습니다.

사사오입 방식의 반올림 구현 : decimal 모듈 사용

decimal 모듈은 정확한 십진법 산술을 위한 모듈입니다.

decimal 모듈의 context 객체에서 자리 올림 모드를 변경하여 사사오입 방식의 반올림을 사용할 수 있습니다.

 

밑의 링크는 decimal 모듈에 대한 파이썬 공식 문서 페이지입니다.

 

decimal — 십진 고정 소수점 및 부동 소수점 산술 — Python 3.9.5 문서

decimal 모듈은 빠르고 정확하게 자리 올림 하는 십진 부동 소수 산술을 지원합니다. float 데이터형보다 다음과 같은 몇 가지 장점을 제공합니다: 모듈 설계의 중심 개념은 세 가지입니다: 십진수,

docs.python.org

 

밑의 코드를 선언하면 decimal 모듈의 round 함수의 첫 번째 매개변수인 반올림을 할 숫자 매개변수에

Decimal 객체를 사용하여 숫자를 넣으면, 사사오입 방식의 반올림을 사용할 수 있습니다.

# decimal 모듈을 import합니다.
import decimal

# 산술 연산을 위한 환경을 불러옵니다.
context = decimal.getcontext()

# 반올림 방식을 사사오입 방식으로 변경해줍니다.
# 파이썬 기존의 반올림 방식인 오사오입 반올림은 decimal.ROUND_HALF_EVEN입니다.
context.rounding = decimal.ROUND_HALF_UP

 

 

 

 

 

 

 

 

※ 주의점!!! : round 함수의 매개변수가 하나일 때

round 함수에 매개변수를 하나만 넣으면 decimal 모듈을 써서

반올림 모드를 변경해도 사사오입 반올림이 적용되지 않습니다.

 

만약, 소수점 첫째 자리에서 반올림만을 고려해 round 함수에 하나의 매개변수만 사용할 생각이더라도

무조건 정밀도까지 표현하는 매개변수 2개인 round 함수를 사용해야합니다.

 

밑의 코드와 결과는 decimal 모듈을 사용하여 사사오입 방식의 반올림으로 설정한 후,

round 함수에 매개변수를 하나만 넣어본 결과입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# 0.5의 소수점 첫째 자리에서 반올림하여 1이 나올 것으로 예상해봅니다.
# 그런데 0이 나옵니다.
print("0.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('0.5')))

# 1.5의 소수점 첫째 자리에서 반올림하여 2가 나올 것으로 예상해봅니다.
# 예상대로 2가 나옵니다.
print("1.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('1.5')))

# 2.5의 소수점 첫째 자리에서 반올림하여 3이 나올 것으로 예상해봅니다.
# 그런데 2가 나옵니다.
print("2.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('2.5')))

# 3.5의 소수점 첫째 자리에서 반올림하여 4가 나올 것으로 예상해봅니다.
# 예상대로 4가 나옵니다.
print("3.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('3.5')))

# 4.5의 소수점 첫째 자리에서 반올림하여 5가 나올 것으로 예상해봅니다.
# 그런데 4가 나옵니다.
print("4.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('4.5')))

print("\n---------------------------------------------------\n")

# -0.5의 소수점 첫째 자리에서 반올림하여 -1이 나올 것으로 예상해봅니다.
# 그런데 0이 나옵니다.
print("-0.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-0.5')))

# -1.5의 소수점 첫째 자리에서 반올림하여 -2가 나올 것으로 예상해봅니다.
# 예상대로 -2가 나옵니다.
print("-1.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-1.5')))

# -2.5의 소수점 첫째 자리에서 반올림하여 -3이 나올 것으로 예상해봅니다.
# 그런데 -2가 나옵니다.
print("-2.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-2.5')))

# -3.5의 소수점 첫째 자리에서 반올림하여 -4가 나올 것으로 예상해봅니다.
# 예상대로 -4가 나옵니다.
print("-3.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-3.5')))

# -4.5의 소수점 첫째 자리에서 반올림하여 -5가 나올 것으로 예상해봅니다.
# 그런데 -4가 나옵니다.
print("-4.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-4.5')))

decimal 모듈을 사용해도 round 함수에 매개변수가 1개면 사사오입 방식의 반올림이 적용되지 않는 결과

 

 

 

 

 

 

 

 

round 함수의 매개변수가 두 개일 때

1. 양수 

1-1. 양의 정수 

밑의 코드와 결과는 양의 정수의 일의 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# 5의 일의 자리에서 사사오입 반올림하여 10이 나올 것으로 예상해봅니다.
# 예상대로 10이 나옵니다.
print("5의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('5'), -1))
print("반환 형식:", type(round(decimal.Decimal('5'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('5'), -1))
print()

# 15의 일의 자리에서 사사오입 반올림하여 20이 나올 것으로 예상해봅니다.
# 예상대로 20이 나옵니다.
print("15의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('15'), -1))
print("반환 형식:", type(round(decimal.Decimal('15'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('15'), -1))
print()

# 25의 일의 자리에서 사사오입 반올림하여 30이 나올 것으로 예상해봅니다.
# 예상대로 30이 나옵니다.
print("25의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('25'), -1))
print("반환 형식:", type(round(decimal.Decimal('25'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('25'), -1))
print()

# 35의 일의 자리에서 사사오입 반올림하여 40이 나올 것으로 예상해봅니다.
# 예상대로 40이 나옵니다.
print("35의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('35'), -1))
print("반환 형식:", type(round(decimal.Decimal('35'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('35'), -1))
print()

# 45의 일의 자리에서 사사오입 반올림하여 50이 나올 것으로 예상해봅니다.
# 예상대로 50이 나옵니다.
print("45의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('45'), -1))
print("반환 형식:", type(round(decimal.Decimal('45'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('45'), -1))

양의 정수의 일의 자리에서 사사오입 반올림한 결과

 

밑의 코드와 결과는 양의 정수의 십의 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# 50의 십의 자리에서 사사오입 반올림하여 100이 나올 것으로 예상해봅니다.
# 예상대로 100이 나옵니다.
print("50의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('50'), -2))
print("반환 형식:", type(round(decimal.Decimal('50'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('50'), -2))
print()

# 150의 십의 자리에서 사사오입 반올림하여 200이 나올 것으로 예상해봅니다.
# 예상대로 200이 나옵니다.
print("150의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('150'), -2))
print("반환 형식:", type(round(decimal.Decimal('150'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('150'), -2))
print()

# 250의 십의 자리에서 사사오입 반올림하여 300이 나올 것으로 예상해봅니다.
# 예상대로 300이 나옵니다.
print("250의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('250'), -2))
print("반환 형식:", type(round(decimal.Decimal('250'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('250'), -2))
print()

# 350의 십의 자리에서 사사오입 반올림하여 400이 나올 것으로 예상해봅니다.
# 예상대로 400이 나옵니다.
print("350의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('350'), -2))
print("반환 형식:", type(round(decimal.Decimal('350'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('350'), -2))
print()

# 450의 십의 자리에서 사사오입 반올림하여 500이 나올 것으로 예상해봅니다.
# 예상대로 500이 나옵니다.
print("450의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('450'), -2))
print("반환 형식:", type(round(decimal.Decimal('450'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('450'), -2))

양의 정수의 십의 자리에서 사사오입 반올림한 결과

 

1-2. 양의 소수 

밑의 코드와 결과는 양의 소수의 소수점 첫째 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# 0.5의 소수점 첫째 자리에서 사사오입 반올림하여 1이 나올 것으로 예상해봅니다.
# 예상대로 1이 나옵니다.
print("0.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('0.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('0.5'), 0)))
print()

# 1.5의 소수점 둘째 자리에서 사사오입 반올림하여 2가 나올 것으로 예상해봅니다.
# 예상대로 2가 나옵니다.
print("1.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('1.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('1.5'), 0)))
print()

# 2.5의 소수점 첫째 자리에서 사사오입 반올림하여 3이 나올 것으로 예상해봅니다.
# 예상대로 3이 나옵니다.
print("2.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('2.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('2.5'), 0)))
print()

# 3.5의 소수점 첫째 자리에서 사사오입 반올림하여 4가 나올 것으로 예상해봅니다.
# 예상대로 4가 나옵니다.
print("3.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('3.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('3.5'), 0)))
print()

# 4.5의 소수점 첫째 자리에서 사사오입 반올림하여 5가 나올 것으로 예상해봅니다.
# 예상대로 5가 나옵니다.
print("4.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('4.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('4.5'), 0)))

양의 소수의 소수점 첫째 자리에서 사사오입 반올림한 결과

 

밑의 코드와 결과는 양의 소수의 소수점 둘째 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# 0.05의 소수점 둘째 자리에서 사사오입 반올림하여 0.1이 나올 것으로 예상해봅니다.
# 예상대로 0.1이 나옵니다.
print("0.05의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('0.05'), 1))
print("반환 형식:", type(round(decimal.Decimal('0.05'), 1)))
print()

# 0.15의 소수점 둘째 자리에서 사사오입 반올림하여 0.2가 나올 것으로 예상해봅니다.
# 예상대로 0.2가 나옵니다.
print("0.15의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('0.15'), 1))
print("반환 형식:", type(round(decimal.Decimal('0.15'), 1)))
print()

# 0.25의 소수점 둘째 자리에서 사사오입 반올림하여 0.3이 나올 것으로 예상해봅니다.
# 예상대로 0.3이 나옵니다.
print("0.25의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('0.25'), 1))
print("반환 형식:", type(round(decimal.Decimal('0.25'), 1)))
print()

# 0.35의 소수점 둘째 자리에서 사사오입 반올림하여 0.4가 나올 것으로 예상해봅니다.
# 예상대로 0.4가 나옵니다.
print("0.35의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('0.35'), 1))
print("반환 형식:", type(round(decimal.Decimal('0.35'), 1)))
print()

# 0.45의 소수점 둘째 자리에서 사사오입 반올림하여 0.5가 나올 것으로 예상해봅니다.
# 예상대로 0.5가 나옵니다.
print("0.45의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('0.45'), 1))
print("반환 형식:", type(round(decimal.Decimal('0.45'), 1)))

양의 소수의 소수점 둘째 자리에서 사사오입 반올림한 결과

 

 

 

 

 

 

 

 

2. 음수

2-1. 음의 정수 

밑의 코드와 결과는 음의 정수의 일의 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# -5의 일의 자리에서 사사오입 반올림하여 -10이 나올 것으로 예상해봅니다.
# 예상대로 -10이 나옵니다.
print("-5의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-5'), -1))
print("반환 형식:", type(round(decimal.Decimal('-5'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-5'), -1))
print()

# -15의 일의 자리에서 사사오입 반올림하여 -20이 나올 것으로 예상해봅니다.
# 예상대로 -20이 나옵니다.
print("-15의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-15'), -1))
print("반환 형식:", type(round(decimal.Decimal('-15'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-15'), -1))
print()

# -25의 일의 자리에서 사사오입 반올림하여 -30이 나올 것으로 예상해봅니다.
# 예상대로 -30이 나옵니다.
print("-25의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-25'), -1))
print("반환 형식:", type(round(decimal.Decimal('-25'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-25'), -1))
print()

# -35의 일의 자리에서 사사오입 반올림하여 -40이 나올 것으로 예상해봅니다.
# 예상대로 -40이 나옵니다.
print("-35의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-35'), -1))
print("반환 형식:", type(round(decimal.Decimal('-35'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-35'), -1))
print()

# -45의 일의 자리에서 사사오입 반올림하여 -50이 나올 것으로 예상해봅니다.
# 예상대로 -50이 나옵니다.
print("-45의 일의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-45'), -1))
print("반환 형식:", type(round(decimal.Decimal('-45'), -1)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-45'), -1))

음의 정수의 일의 자리에서 사사오입 반올림한 결과

 

밑의 코드와 결과는 음의 정수의 십의 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# -50의 십의 자리에서 사사오입 반올림하여 -100이 나올 것으로 예상해봅니다.
# 예상대로 -100이 나옵니다.
print("-50의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-50'), -2))
print("반환 형식:", type(round(decimal.Decimal('-50'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-50'), -2))
print()

# -150의 십의 자리에서 사사오입 반올림하여 -200이 나올 것으로 예상해봅니다.
# 예상대로 -200이 나옵니다.
print("-150의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-150'), -2))
print("반환 형식:", type(round(decimal.Decimal('-150'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-150'), -2))
print()

# -250의 십의 자리에서 사사오입 반올림하여 -300이 나올 것으로 예상해봅니다.
# 예상대로 -300이 나옵니다.
print("-250의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-250'), -2))
print("반환 형식:", type(round(decimal.Decimal('-250'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-250'), -2))
print()

# -350의 십의 자리에서 사사오입 반올림하여 -400이 나올 것으로 예상해봅니다.
# 예상대로 -400이 나옵니다.
print("-350의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-350'), -2))
print("반환 형식:", type(round(decimal.Decimal('-350'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-350'), -2))
print()

# -450의 십의 자리에서 사사오입 반올림하여 -500이 나올 것으로 예상해봅니다.
# 예상대로 -500이 나옵니다.
print("-450의 십의 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-450'), -2))
print("반환 형식:", type(round(decimal.Decimal('-450'), -2)))
print("지수 표현없이 출력하기:", "%d" % round(decimal.Decimal('-450'), -2))

음의 정수의 십의 자리에서 사사오입 반올림한 결과

 

 

2-2. 음의 소수

밑의 코드와 결과는 음의 소수의 소수점 첫째 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# -0.5의 소수점 첫째 자리에서 사사오입 반올림하여 -1이 나올 것으로 예상해봅니다.
# 예상대로 -1이 나옵니다.
print("-0.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-0.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('-0.5'), 0)))
print()

# -1.5의 소수점 첫째 자리에서 사사오입 반올림하여 -2가 나올 것으로 예상해봅니다.
# 예상대로 -2가 나옵니다.
print("-1.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-1.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('-1.5'), 0)))
print()

# -2.5의 소수점 첫째 자리에서 사사오입 반올림하여 -3이 나올 것으로 예상해봅니다.
# 예상대로 -3이 나옵니다.
print("-2.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-2.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('-2.5'), 0)))
print()

# -3.5의 소수점 첫째 자리에서 사사오입 반올림하여 -4가 나올 것으로 예상해봅니다.
# 예상대로 -4가 나옵니다.
print("-3.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-3.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('-3.5'), 0)))
print()

# -4.5의 소수점 첫째 자리에서 사사오입 반올림하여 -5가 나올 것으로 예상해봅니다.
# 예상대로 -5가 나옵니다.
print("-4.5의 소수점 첫째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-4.5'), 0))
print("반환 형식:", type(round(decimal.Decimal('-4.5'), 0)))

음의 소수의 소수점 첫째 자리에서 사사오입 반올림한 결과

 

밑의 코드와 결과는 음의 소수의 소수점 둘째 자리에서 사사오입 반올림한 것입니다.

import decimal

# 사사오입 방식의 반올림을 사용하기 위해 설정해줍니다.
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP

# -0.05의 소수점 둘째 자리에서 사사오입 반올림하여 -0.1이 나올 것으로 예상해봅니다.
# 예상대로 -0.1이 나옵니다.
print("-0.05의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-0.05'), 1))
print("반환 형식:", type(round(decimal.Decimal('-0.05'), 1)))
print()

# -0.15의 소수점 둘째 자리에서 사사오입 반올림하여 -0.2가 나올 것으로 예상해봅니다.
# 예상대로 -0.2가 나옵니다.
print("-0.15의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-0.15'), 1))
print("반환 형식:", type(round(decimal.Decimal('-0.15'), 1)))
print()

# -0.25의 소수점 둘째 자리에서 사사오입 반올림하여 -0.3이 나올 것으로 예상해봅니다.
# 예상대로 -0.3이 나옵니다.
print("-0.25의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-0.25'), 1))
print("반환 형식:", type(round(decimal.Decimal('-0.25'), 1)))
print()

# -0.35의 소수점 둘째 자리에서 사사오입 반올림하여 -0.4가 나올 것으로 예상해봅니다.
# 예상대로 -0.4가 나옵니다.
print("-0.35의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-0.35'), 1))
print("반환 형식:", type(round(decimal.Decimal('-0.35'), 1)))
print()

# -0.45의 소수점 둘째 자리에서 사사오입 반올림하여 -0.5가 나올 것으로 예상해봅니다.
# 예상대로 -0.5가 나옵니다.
print("-0.45의 소수점 둘째 자리에서 사사오입 반올림한 결과:", round(decimal.Decimal('-0.45'), 1))
print("반환 형식:", type(round(decimal.Decimal('-0.45'), 1)))

음의 소수의 소수점 둘째 자리에서 사사오입 반올림한 결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

반응형

댓글