웹사이트 검색

Python 십진수 - 나눗셈, 반올림, 정밀도


Python 십진수 모듈은 적절한 정밀도와 숫자 반올림으로 나누는 데 도움이 됩니다.

파이썬 십진수 모듈

십진수 작업

십진수는 소수점이 고정된 부동 소수점 숫자입니다. 필요에 따라 숫자를 올바르게 반올림해야 합니다. 그렇지 않으면 예상치 못한 결과가 나올 수 있습니다. Python의 십진수 모듈은 십진수를 더 정확하게 사용하는 데 도움이 됩니다.

10진수 모듈 필요

실제로 이 모듈을 사용하기 전에 우리가 말하는 정밀도가 무엇인지 확인하고 실제로 이 모듈이 필요한 이유를 설정해 보겠습니다. 다음 코드 스니펫을 살펴보십시오.

division = 72 / 7
print(division)

10진수 모듈 사용

이 게시물에서 만드는 모든 프로그램에서 모든 프로그램에서 십진수 모듈을 가져올 것입니다.

import decimal

이 모듈에서 특정 기능만 가져오는 경우가 있을 수 있습니다. 이는 다음과 같이 수행할 수 있습니다.

from decimal import Decimal

십진수 모듈을 일부 프로그램에 넣기 시작합시다.

Python 10진수 모듈 예제

이제 모듈과 관련된 예제부터 시작하겠습니다.

소수로 나누기 수정

여기서는 부동 소수점 결과를 생성해야 하는 나눗셈을 수행하기 위해 위에서 작성한 프로그램을 수정합니다. 십진수 모듈을 사용하여 수정된 프로그램은 다음과 같습니다.

import decimal

division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)

단일 작업을 위한 정밀도 제어

지난 프로그램에서는 이제 답에 소수점 이하 25자리가 있었습니다. 그러나 소수점 이하 세 자리까지만 원하는 경우에는 어떻게 해야 합니까? 이것도 제어가 가능합니다. 여기에서 프로그램의 다른 작업에 반영되지 않는 답변의 정밀도를 제어합니다.

import decimal

with decimal.localcontext() as ctx:
    ctx.prec = 3
    division = decimal.Decimal(72) / decimal.Decimal(7)
    print(division)

again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)

완벽한 프로그램을 위한 정밀도 제어

프로그램에서 전역적으로 정밀도를 제어하는 것도 가능합니다. 이것은 프로그램에서 많은 숫자를 다룰 때 항상 권장되는 것은 아닙니다. 다음은 예입니다.

import decimal

decimal.getcontext().prec = 3

division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)

again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)

숫자 반올림

round(...) 함수를 사용하여 숫자를 우아하게 반올림할 수 있습니다. 해 보자:

import decimal

#Can be rounded to 13.48 or 13.49
rounded = round(13.485, 2)
print(rounded)
import decimal

#Can be rounded to 13.48 or 13.49
rounded = round(13.485, 2)
print(decimal.Decimal(rounded).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP))

파이썬 십진 컨텍스트 얻기

decimal 모듈에 대해 기본적으로 설정된 기본 컨텍스트를 보고 싶다면 다음 스크립트를 사용할 수 있습니다.

from decimal import *
print(getcontext())