Python hàm round() với EXAMPLES
Tròn()
Round() là một hàm tích hợp sẵn có trong 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ố float cần làm tròn.
- num_of_decimals: (tùy chọn) Số lượng số thập phân được xem xét khi làm tròn. Tùy chọn này và nếu không được chỉ định, mặc định là 0 và làm tròn đến số nguyên gần nhất.
Mô tả Chi tiết
Phương thức round() nhận vào 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.
Đối số thứ hai là tùy chọn và mặc định là 0 khi không được chỉ định và 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 số sau vị trí thập phân đã cho
- >=5 than + 1 sẽ được thêm vào giá trị cuối cùng
- <5 thì giá trị cuối cùng sẽ trả về khi nó lên đến vị trí thập phân được đề cập.
Giá trị trả lại
Nó sẽ trả về một giá trị số nguyên nếu không đưa ra số_of_decimals và một giá trị float nếu đưa ra số_of_decimals. Xin lưu ý rằng giá trị sẽ được làm tròn thành +1 nếu giá trị sau dấu thập phân >=5, nếu không, nó sẽ trả về giá trị đến vị trí thập phân được đề cập.
Làm tròn có thể có bao nhiêu tác động? (Làm tròn và cắt bớt)
Ví dụ tốt nhất cho thấy tác động của việc làm tròn là đối với thị trường chứng khoán. Trước đây, tức là vào năm 1982, Sở giao dịch chứng khoán Vancouver (VSE): được sử dụng để cắt bớt giá trị cổ phiếu đến ba chữ số thập phân trên mỗi giao dịch.
Nó được thực hiện gần 3000 lần mỗi ngày. Việc cắt giảm tích lũy dẫn đến 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ố dấu phẩy động được tạo bên dưới là giá trị cổ phiếu. Hiện tại tôi đang tạo nó cho nhiều loại
1,000,000 giây trong khoảng từ 0.01 đến 0.05.
Ví dụ:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Để thể hiện tác động của việc làm tròn, tôi đã viết một đoạn mã nhỏ trong đó lúc đầu, bạn chỉ cần sử dụng các số có tối đa 3 chữ số thập phân, tức là cắt bớt số sau 3 chữ số thập phân.
Tôi có tổng giá trị ban đầu, tổng giá trị đến từ các giá trị bị cắt bớt và sự khác biệt giữa giá trị ban đầu và giá trị bị cắt bớt.
Trên cùng một bộ số, tôi đã sử dụng phương thức round() lê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ị được làm tròn.
Dưới đây là ví dụ và đầu ra
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 bản gốc và sau khi cắt bớt là 499.9016193868665 và từ vòng, nó là 0.04661938686695066
Sự khác biệt dường như rất lớn và ví dụ cho thấy cách làm tròn() giúp tính toán gần chính xác.
Ví dụ: Phao tròn Numbers
Trong chương trình này, chúng ta sẽ xem cách làm tròn số trên số thực
# 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 số ví dụ về cách làm tròn 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ụ: Mảng tròn Numpy
Làm thế nào để làm tròn 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à sử dụng 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(), kết quả này mang lại cho bạn kết quả tương tự như trong ví dụ bên dưới.
Ví dụ: Mô-đun thập phân
Ngoài hàm round(), python còn có module thập phân giúp xử lý số thập phân chính xác hơn.
Mô-đun thập phân đi kèm với các kiểu làm tròn, như hiển thị bên dưới:
- ROUND_CEILING: nó sẽ tròn về phía Vô cực,
- ROUND_DOWN: nó sẽ làm tròn giá trị về 0,
- ROUND_FLOOR: nó sẽ tròn về phía -Infinity,
- ROUND_HALF_DOWN: sẽ làm tròn đến giá trị gần nhất hướng về 0,
- ROUND_HALF_EVEN: sẽ làm tròn đến số gần nhất có giá trị đi đến số nguyên chẵn gần nhất,
- ROUND_HALF_UP: sẽ làm tròn đến giá trị gần nhất có giá trị đi xa hơn 0
- ROUND_UP: nó sẽ làm tròn khi giá trị biến mất khỏi 0.
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
Tổng kết
- Round(float_num, Num_of_decimals) là một hàm tích hợp sẵn có trong python. Nó sẽ trả về cho bạn số float sẽ được làm tròn đến vị trí thập phân được đưa ra làm đầu vào.
- float_num: số float cần làm tròn.
- Num_of_decimals: Là số thập phân cần xét khi làm tròn.
- Nó sẽ trả về một giá trị số nguyên nếu không đưa ra số_of_decimals và một giá trị float nếu đưa ra số_of_decimals.