Python Συνάρτηση round() με ΠΑΡΑΔΕΙΓΜΑΤΑ
⚡ Έξυπνη Σύνοψη
Python Η round() είναι μια ενσωματωμένη συνάρτηση που επιστρέφει μια τιμή κινητής υποδιαστολής ή ακέραια τιμή στρογγυλοποιημένη σε έναν καθορισμένο αριθμό δεκαδικών ψηφίων, χρησιμοποιώντας στρογγυλοποίηση τραπεζίτη για να σπάσει τους δεσμούς προς το πλησιέστερο ζυγό ψηφίο.

Ποια είναι η συνάρτηση round() στο Python?
Python Η round() είναι μια ενσωματωμένη συνάρτηση διαθέσιμη με PythonΘα σας επιστρέψει έναν αριθμό κινητής υποδιαστολής που θα στρογγυλοποιηθεί στα δεκαδικά ψηφία που δίνονται ως είσοδος.
Εάν τα δεκαδικά ψηφία προς στρογγυλοποίηση δεν καθορίζονται, θεωρείται ως 0 και θα στρογγυλοποιηθεί στον πλησιέστερο ακέραιο.
Σύνταξη
round(float_num, num_of_decimals)
Παράμετροι
- float_num: Ο αριθμός κινητής υποδιαστολής που θα στρογγυλοποιηθεί.
- αριθμός_δεκαδικών_ψηφίων: (προαιρετικό) Ο αριθμός των δεκαδικών που θα λαμβάνονται υπόψη κατά τη στρογγυλοποίηση. Είναι προαιρετικός και, εάν δεν καθοριστεί, η προεπιλεγμένη τιμή είναι 0 και η στρογγυλοποίηση γίνεται στον πλησιέστερο ακέραιο αριθμό.
Περιγραφή
Η μέθοδος round() δέχεται δύο ορίσματα:
- ο αριθμός που θα στρογγυλοποιηθεί, και
- τα δεκαδικά ψηφία που πρέπει να λαμβάνονται υπόψη κατά τη στρογγυλοποίηση.
Το δεύτερο όρισμα είναι προαιρετικό και έχει προεπιλεγμένη τιμή 0 όταν δεν καθορίζεται και, σε αυτήν την περίπτωση, θα στρογγυλοποιηθεί στον πλησιέστερο ακέραιο και ο τύπος επιστροφής θα είναι επίσης ακέραιος.
Όταν υπάρχουν τα δεκαδικά ψηφία, δηλαδή το δεύτερο όρισμα, θα στρογγυλοποιηθεί στον αριθμό των θέσεων που δίνονται. Ο τύπος επιστροφής θα είναι float.
Αν ο αριθμός μετά το δεκαδικό ψηφίο που δίνεται είναι:
- >= 5, τότε + 1 θα προστεθεί στην τελική τιμή.
- < 5, τότε η τελική τιμή θα επιστραφεί ως έχει, μέχρι τα δεκαδικά ψηφία που αναφέρονται.
Τιμή επιστροφής
Θα επιστρέψει μια ακέραια τιμή εάν δεν δοθεί ο αριθμός_δεκαδικών και μια κινητή τιμή εάν δοθεί ο αριθμός_δεκαδικών. Λάβετε υπόψη ότι η τιμή θα στρογγυλοποιηθεί στο +1 εάν η τιμή μετά την υποδιαστολή είναι >= 5, διαφορετικά θα επιστρέψει την τιμή ως έχει, μέχρι τα αναφερόμενα δεκαδικά ψηφία.
Πόσο αντίκτυπο μπορεί να έχει η στρογγυλοποίηση; (Στρογγυλοποίηση vs Περικοπή)
Το καλύτερο παράδειγμα για να καταδειχθεί ο αντίκτυπος της στρογγυλοποίησης είναι η χρηματιστηριακή αγορά. Στο παρελθόν, δηλαδή το έτος 1982, η Χρηματιστήριο του Βανκούβερ (VSE) χρησιμοποιείται για την περικοπή των τιμών των μετοχών σε τρία δεκαδικά ψηφία σε κάθε συναλλαγή.
Γινόταν σχεδόν 3000 φορές κάθε μέρα. Οι συσσωρευμένες περικοπές οδήγησαν σε απώλεια περίπου 25 μονάδων ανά μήνα.
Ένα παράδειγμα περικοπής των τιμών έναντι στρογγυλοποίησης φαίνεται παρακάτω.
Θεωρήστε τους αριθμούς κινητής υποδιαστολής που δημιουργούνται παρακάτω ως τιμές μετοχών. Αυτήν τη στιγμή, τους δημιουργώ για ένα εύρος 1,000,000 δευτερολέπτων μεταξύ 0.01 και 0.05.
Παραδείγματα:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Για να δείξω την επίδραση της στρογγυλοποίησης, έγραψα ένα μικρό κομμάτι κώδικα όπου, αρχικά, χρησιμοποιείτε τους αριθμούς μέχρι μόνο 3 δεκαδικά ψηφία, δηλαδή περικόπτετε τον αριθμό μετά από 3 δεκαδικά ψηφία.
Έχω την αρχική συνολική τιμή, το σύνολο που προέρχεται από τις περικομμένες τιμές και τη διαφορά μεταξύ της αρχικής και της περικομμένης τιμής.
Στο ίδιο σύνολο αριθμών, χρησιμοποίησα τη μέθοδο round() μέχρι 3 δεκαδικά ψηφία και υπολόγισα το άθροισμα και τη διαφορά μεταξύ της αρχικής τιμής και της στρογγυλοποιημένης τιμής.
Ακολουθεί το παράδειγμα και η έξοδος.
Παράδειγμα 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.around(), η οποία σας δίνει το ίδιο αποτέλεσμα με την numpy.round() που φαίνεται παραπάνω.
Παράδειγμα: Δεκαδική ενότητα
Εκτός από τη συνάρτηση round(), Python Έχει μια δεκαδική ενότητα που βοηθά στον χειρισμό δεκαδικών αριθμών με μεγαλύτερη ακρίβεια.
Η ενότητα Δεκαδικών περιλαμβάνει τύπους στρογγυλοποίησης, όπως φαίνεται παρακάτω:
- ΣΤΡΟΓΓΥΛΗ_ΟΡΟΦΗ: θα στρογγυλοποιηθεί προς το άπειρο.
- ΣΤΡΟΓΓΥΛΟ_ΚΑΤΩ: θα στρογγυλοποιήσει την τιμή προς το μηδέν.
- ΣΤΡΟΓΓΥΛΟΣ_ΟΡΟΦΟΣ: θα στρογγυλοποιηθεί προς το -άπειρο.
- ΣΤΡΟΓΓΥΛΟ_ΜΙΣΟ_ΚΑΤΩ: θα στρογγυλοποιηθεί στην πλησιέστερη τιμή που πλησιάζει το μηδέν.
- ΜΙΣΟ_ΖΥΓΟ_ΓΥΡΟ: θα στρογγυλοποιηθεί στην πλησιέστερη τιμή πηγαίνοντας στον πλησιέστερο άρτιο ακέραιο.
- ΣΤΡΟΓΓΥΛΟΠΟΙΗΣΗ ΜΙΣΟΥ ΠΑΝΩ: θα στρογγυλοποιηθεί στην πλησιέστερη τιμή που απομακρύνεται από το μηδέν.
- ΜΑΝΔΡΙΣΜΑ ΖΩΩΝ: Θα στρογγυλοποιήσει το σημείο όπου η τιμή θα αποκλίνει από το μηδέν.
Στα δεκαδικά, η μέθοδος quantize() βοηθά στη στρογγυλοποίηση σε ένα σταθερό αριθμό δεκαδικών ψηφίων και μπορείτε να καθορίσετε τη στρογγυλοποίηση που θα χρησιμοποιηθεί, όπως φαίνεται στο παρακάτω παράδειγμα.
Παράδειγμα: Χρησιμοποιώντας μεθόδους 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
