Python round() 함수와 예제
⚡ 스마트 요약
Python round() 함수는 부동 소수점 또는 정수 값을 지정된 소수점 자릿수로 반올림하여 반환하는 내장 함수입니다. 동점일 경우 가장 가까운 짝수로 반올림하는 은행가 반올림 방식을 사용합니다.
round() 함수는 무엇인가요? Python?
Python round()는 내장 함수입니다. Python이 함수는 입력된 소수점 자릿수까지 반올림된 부동 소수점 숫자를 반환합니다.
반올림할 소수 자릿수가 지정되지 않으면 0으로 간주되어 가장 가까운 정수로 반올림합니다.
통사론
round(float_num, num_of_decimals)
파라미터
- float_num: 반올림할 소수점 숫자입니다.
- 소수점 이하 자릿수: (선택 사항) 반올림 시 고려할 소수점 자릿수입니다. 이 값은 선택 사항이며, 지정하지 않으면 기본값은 0이고 가장 가까운 정수로 반올림됩니다.
기술설명
round() 메서드는 두 개의 인수를 받습니다.
- 반올림할 숫자와
- 반올림하는 동안 고려해야 할 소수 자릿수입니다.
두 번째 인수는 선택 사항이며 지정하지 않으면 기본값은 0입니다. 이 경우 가장 가까운 정수로 반올림되며 반환 유형 또한 정수입니다.
소수 자릿수, 즉 두 번째 인수가 있으면 주어진 자릿수로 반올림됩니다. 반환 유형은 부동 소수점입니다.
주어진 소수점 이하 자릿수가 다음과 같을 경우:
- 5 이상이면 최종 값에 +1이 더해집니다.
- < 5인 경우, 최종 값은 언급된 소수점 자릿수까지 그대로 반환됩니다.
반환 값
소수점 이하 자릿수가 지정되지 않으면 정수 값을 반환하고, 지정되면 부동 소수점 값을 반환합니다. 소수점 이하 자릿수가 5 이상이면 값은 1을 더하여 반올림되고, 그렇지 않으면 지정된 소수점 이하 자릿수까지 그대로 반환됩니다.
반올림은 얼마나 많은 영향을 미칠 수 있나요? (반올림 대 잘림)
반올림의 영향을 보여주는 가장 좋은 예는 주식 시장입니다. 과거, 즉 1982년에는 밴쿠버 증권 거래소 (VSE)는 예전에는 각 거래에서 주식 가격을 소수점 셋째 자리까지 반올림했습니다.
이 작업은 매일 거의 3000번씩 수행되었습니다. 누적된 잘림 현상으로 인해 한 달에 약 25점의 손실이 발생했습니다.
값을 자르는 것과 반올림하는 것의 예가 아래에 나와 있습니다.
아래에 생성된 부동 소수점 숫자를 주식 가치로 간주하십시오. 현재 저는 0.01에서 0.05 사이의 범위에서 1,000,000초 동안 이 숫자를 생성하고 있습니다.
예 :
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
반올림의 영향을 보여주기 위해, 먼저 소수점 셋째 자리까지만 숫자를 사용하는 간단한 코드를 작성했습니다. 즉, 소수점 셋째 자리까지만 숫자를 버리는 것입니다.
원래 총값, 잘린 값에서 나온 총값, 그리고 원래 값과 잘린 값의 차이가 있습니다.
동일한 숫자 집합에 대해 round() 메서드를 사용하여 소수점 셋째 자리까지 반올림하고, 원래 값과 반올림된 값의 합과 차이를 계산했습니다.
다음은 예시와 출력 결과입니다.
예제 1
import random def truncate(num): return int(num * 1000) / 1000 arr = [random.uniform(0.01, 0.05) for _ in range(1000000)] sum_num = 0 sum_truncate = 0 for i in arr: sum_num = sum_num + i sum_truncate = truncate(sum_truncate + i) print("Testing by using truncating upto 3 decimal places") print("The original sum is = ", sum_num) print("The total using truncate = ", sum_truncate) print("The difference from original - truncate = ", sum_num - sum_truncate) print("\n\n") print("Testing by using round() upto 3 decimal places") sum_num1 = 0 sum_truncate1 = 0 for i in arr: sum_num1 = sum_num1 + i sum_truncate1 = round(sum_truncate1 + i, 3) print("The original sum is =", sum_num1) print("The total using round = ", sum_truncate1) print("The difference from original - round =", sum_num1 - sum_truncate1)
출력:
Testing by using truncating upto 3 decimal places The original sum is = 29985.958619386867 The total using truncate = 29486.057 The difference from original - truncate = 499.9016193868665 Testing by using round() up to 3 decimal places The original sum is = 29985.958619386867 The total using round = 29985.912 The difference from original - round = 0.04661938686695066
원래 값과 잘린 값의 차이는 499.9016193868665이고, round() 함수를 사용하면 0.04661938686695066이 됩니다.
차이가 상당히 큰 것 같으며, 예시를 통해 round() 메서드가 정확도에 가까운 값을 계산하는 데 어떻게 도움이 되는지 알 수 있습니다.
예: 반올림 부동소수점 Numbers
이 프로그램에서는 부동 소수점 숫자에 대한 반올림이 어떻게 작동하는지 살펴보겠습니다.
# testing round() float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5 float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5 float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5 float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5 print("The rounded value without num_of_decimals is :", round(float_num1)) print("The rounded value without num_of_decimals is :", round(float_num2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))
출력:
The rounded value without num_of_decimals is : 11 The rounded value without num_of_decimals is : 10 The rounded value with num_of_decimals as 2 is : 10.35 The rounded value with num_of_decimals as 2 is : 10.34
예: 정수 값 반올림
정수 값에 round()를 사용하면 아무런 변경 없이 숫자만 반환됩니다.
# testing round() on a integer num = 15 print("The output is", round(num))
출력:
The output is 15
예: 음수 반올림 Numbers
음수에 대한 반올림이 어떻게 작동하는지 몇 가지 예를 살펴보겠습니다.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
출력:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
예시: NumPy 배열 반올림
NumPy 값을 어떻게 반올림하나요? 배열 Python?
이 문제를 해결하기 위해 NumPy 모듈의 numpy.round() 또는 numpy.around() 메서드를 사용할 수 있습니다. 아래 예시를 참조하십시오.
numpy.round() 사용
# testing round() import numpy as np arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323] arr1 = np.round(arr, 2) print(arr1)
출력:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
위에서 보여준 numpy.round()와 동일한 결과를 제공하는 numpy.around()를 사용할 수도 있습니다.
예: 십진수 모듈
round() 함수 외에도, Python 소수점을 보다 정확하게 처리하는 데 도움이 되는 소수점 모듈이 있습니다.
소수 모듈에는 아래와 같이 다양한 반올림 유형이 포함되어 있습니다.
- 원형 천장: 그것은 무한대를 향해 둥글게 될 것입니다.
- 라운드다운: 값은 0에 가깝게 반올림됩니다.
- 원형 바닥: 반올림하면 -무한대가 됩니다.
- 라운드 하프 다운: 0에 가장 가까운 값으로 반올림됩니다.
- 라운드 하프 이븐: 가장 가까운 짝수 정수로 반올림됩니다.
- 반올림: 0에서 멀어지는 방향으로 가장 가까운 값으로 반올림됩니다.
- 요약: 값이 0에서 멀어지는 지점에서 반올림됩니다.
십진수에서 퀀타이즈() 메서드는 고정된 소수 자릿수로 반올림하는 데 도움이 되며 아래 예제와 같이 사용할 반올림을 지정할 수 있습니다.
예: round() 및 소수 메소드 사용
import decimal round_num = 15.456 final_val = round(round_num, 2) #Using decimal module final_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING) final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN) final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR) final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN) final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN) final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP) final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP) print("Using round()", final_val) print("Using Decimal - ROUND_CEILING ",final_val1) print("Using Decimal - ROUND_DOWN ",final_val2) print("Using Decimal - ROUND_FLOOR ",final_val3) print("Using Decimal - ROUND_HALF_DOWN ",final_val4) print("Using Decimal - ROUND_HALF_EVEN ",final_val5) print("Using Decimal - ROUND_HALF_UP ",final_val6) print("Using Decimal - ROUND_UP ",final_val7)
출력:
Using round() 15.46 Using Decimal - ROUND_CEILING 15.46 Using Decimal - ROUND_DOWN 15.45 Using Decimal - ROUND_FLOOR 15.45 Using Decimal - ROUND_HALF_DOWN 15.46 Using Decimal - ROUND_HALF_EVEN 15.46 Using Decimal - ROUND_HALF_UP 15.46 Using Decimal - ROUND_UP 15.46

