Python Hàm round() với các ví dụ
⚡ Tóm tắt thông minh
Python Hàm round() là một hàm tích hợp trả về giá trị số thực hoặc số nguyên được làm tròn đến số chữ số thập phân được chỉ định, sử dụng phương pháp làm tròn kiểu ngân hàng để giải quyết các trường hợp bằng nhau về phía chữ số chẵn gần nhất.
Hàm round() là gì? Python?
Python round() là một hàm tích hợp sẵn có sẵn với Python. Nó sẽ trả về cho bạn một số float sẽ được làm tròn đến vị trí thập phân được đưa ra làm đầu vào.
Nếu không chỉ định số thập phân cần làm tròn, số đó sẽ được coi là 0 và sẽ làm tròn đến số nguyên gần nhất.
cú pháp
round(float_num, num_of_decimals)
Thông số Kỹ thuật
- float_num: Số thực cần làm tròn.
- số_thập_phân: (Tùy chọn) Số lượng chữ số thập phân được xem xét khi làm tròn. Tham số này là tùy chọn, và nếu không được chỉ định, giá trị mặc định là 0, và việc làm tròn sẽ được thực hiện đến số nguyên gần nhất.
Mô tả Chi tiết
Phương thức round() nhận hai đối số:
- số cần làm tròn, và
- các vị trí thập phân cần xem xét khi làm tròn.
Tham số thứ hai là tùy chọn và mặc định là 0 nếu không được chỉ định, trong trường hợp đó, nó sẽ làm tròn đến số nguyên gần nhất, và kiểu trả về cũng sẽ là một số nguyên.
Khi có vị trí thập phân, tức là đối số thứ hai, nó sẽ làm tròn đến số vị trí đã cho. Kiểu trả về sẽ là float.
Nếu chữ số sau dấu thập phân được cho là:
- Nếu >= 5, thì giá trị cuối cùng sẽ được cộng thêm 1.
- Nếu nhỏ hơn 5, thì giá trị cuối cùng sẽ được trả về nguyên trạng, đến số chữ số thập phân đã nêu.
Giá trị trả lại
Hàm sẽ trả về giá trị số nguyên nếu tham số num_of_decimals không được cung cấp và giá trị số thực nếu tham số num_of_decimals được cung cấp. Xin lưu ý rằng giá trị sẽ được làm tròn lên +1 nếu giá trị sau dấu thập phân lớn hơn hoặc bằng 5, nếu không, nó sẽ trả về giá trị nguyên trạng, đến số chữ số thập phân đã được chỉ định.
Làm tròn có thể có bao nhiêu tác động? (Làm tròn và cắt bớt)
Ví dụ điển hình nhất để minh họa tác động của việc làm tròn số là thị trường chứng khoán. Trong quá khứ, tức là vào năm 1982, Sở giao dịch chứng khoán Vancouver (VSE) trước đây thường làm tròn giá trị cổ phiếu xuống còn ba chữ số thập phân cho mỗi giao dịch.
Việc này được thực hiện gần 3000 lần mỗi ngày. Sự tích lũy các lỗi cắt xén dẫn đến việc mất khoảng 25 điểm mỗi tháng.
Một ví dụ về việc cắt bớt các giá trị so với làm tròn được hiển thị bên dưới.
Hãy coi các số thực được tạo ra bên dưới như các giá trị cổ phiếu. Hiện tại, tôi đang tạo ra chúng cho một khoảng thời gian 1,000,000 giây, nằm giữa 0.01 và 0.05.
Ví dụ:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Để minh họa tác động của việc làm tròn, tôi đã viết một đoạn mã nhỏ, trong đó ban đầu, bạn chỉ sử dụng các số đến 3 chữ số thập phân, tức là cắt bỏ phần thập phân của số sau 3 chữ số.
Tôi có tổng giá trị ban đầu, tổng giá trị sau khi đã cắt bớt, và hiệu số giữa giá trị ban đầu và giá trị sau khi cắt bớt.
Với cùng một tập hợp số, tôi đã sử dụng phương thức round() làm tròn đến 3 chữ số thập phân và tính tổng cũng như hiệu giữa giá trị ban đầu và giá trị đã làm tròn.
Dưới đây là ví dụ và kết quả.
Ví dụ 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)
Đầu ra:
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
Sự khác biệt giữa giá trị ban đầu và giá trị bị cắt bớt là 499.9016193868665, và từ hàm round(), ta được 0.04661938686695066.
Sự khác biệt có vẻ rất lớn, và ví dụ cho thấy phương thức round() giúp tính toán gần với độ chính xác như thế nào.
Ví dụ: Phao tròn Numbers
Trong chương trình này, chúng ta sẽ tìm hiểu cách làm tròn số thực trên các số thập phân.
# 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))
Đầu ra:
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
Ví dụ: Làm tròn giá trị số nguyên
Nếu bạn tình cờ sử dụng round() trên một giá trị số nguyên, nó sẽ chỉ trả về số đó cho bạn mà không có bất kỳ thay đổi nào.
# testing round() on a integer num = 15 print("The output is", round(num))
Đầu ra:
The output is 15
Ví dụ: Làm tròn số âm Numbers
Chúng ta hãy xem một vài ví dụ về cách làm tròn số đối với số âm.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
Đầu ra:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Ví dụ: Làm tròn mảng NumPy
Làm thế nào để làm tròn số trong NumPy? mảng trong Python?
Để giải quyết vấn đề này, chúng ta có thể sử dụng mô-đun NumPy và phương thức numpy.round() hoặc numpy.around(), như trong ví dụ bên dưới.
Sử dụng 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)
Đầu ra:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
Chúng ta cũng có thể sử dụng numpy.around(), phương thức này cho kết quả tương tự như numpy.round() đã trình bày ở trên.
Ví dụ: Mô-đun thập phân
Ngoài hàm round(), Python có một mô-đun thập phân giúp xử lý các số thập phân chính xác hơn.
Mô-đun Decimal đi kèm với các kiểu làm tròn, như được hiển thị bên dưới:
- TRẦN TRÒN: Nó sẽ làm tròn về phía vô cực.
- ROUND_DOWN: Nó sẽ làm tròn giá trị về phía số không.
- SÀN TRÒN: Nó sẽ được làm tròn về phía -Vô cực.
- ROUND_HALF_DOWN: Nó sẽ được làm tròn đến giá trị gần nhất hướng về số không.
- ROUND_HALF_EVEN: Nó sẽ làm tròn đến giá trị gần nhất, làm tròn đến số nguyên chẵn gần nhất.
- LÀM TRÒN MỘT NỬA: Nó sẽ làm tròn đến giá trị gần nhất khi càng xa số 0.
- TỔNG HỢP: Nó sẽ làm tròn khi giá trị càng xa số không.
Trong số thập phân, phương thức quantize() giúp làm tròn đến một số vị trí thập phân cố định và bạn có thể chỉ định cách làm tròn sẽ được sử dụng, như trong ví dụ bên dưới.
Ví dụ: Sử dụng phương thức round() và thập phân
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)
Đầu ra:
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

