Στρογγυλό()
Το Round () είναι μια ενσωματωμένη λειτουργία διαθέσιμη με πύθωνα. Θα σας επιστρέψει έναν αριθμό float που θα στρογγυλοποιηθεί στα δεκαδικά ψηφία που δίνονται ως είσοδος.
Εάν δεν προσδιορίζονται τα δεκαδικά ψηφία προς στρογγυλοποίηση, θεωρείται 0 και θα στρογγυλοποιείται στον πλησιέστερο ακέραιο.
Σε αυτό το σεμινάριο Python, θα μάθετε:
- Στρογγυλό()
- Σύνταξη:
- Πόσο αντίκτυπο μπορεί να έχει η στρογγυλοποίηση; (Στρογγυλοποίηση έναντι περικοπής)
- Παράδειγμα: Στρογγυλοποίηση αριθμών πλωτήρα
- Παράδειγμα: Στρογγυλοποίηση ακέραιων τιμών
- Παράδειγμα: Στρογγυλοποίηση σε αρνητικούς αριθμούς
- Παράδειγμα: Στρογγυλές συστοιχίες Numpy
- Παράδειγμα: Δεκαδική ενότητα
Σύνταξη:
round(float_num, num_of_decimals)
Παράμετροι
- float_num: ο αριθμός float που θα στρογγυλοποιηθεί.
- num_of_decimals: (προαιρετικά) Ο αριθμός των δεκαδικών που πρέπει να ληφθούν υπόψη κατά τη στρογγυλοποίηση. Είναι προαιρετικό και, εάν δεν προσδιορίζεται, προεπιλογή στο 0 και η στρογγυλοποίηση γίνεται στον πλησιέστερο ακέραιο.
Περιγραφή
Η μέθοδος round () παίρνει δύο επιχειρήματα
- τον αριθμό που θα στρογγυλοποιηθεί και
- τα δεκαδικά ψηφία που πρέπει να εξετάσει κατά τη στρογγυλοποίηση.
Το δεύτερο όρισμα είναι προαιρετικό και από προεπιλογή στο 0 όταν δεν προσδιορίζεται, και σε αυτήν την περίπτωση, θα στρογγυλοποιηθεί στον πλησιέστερο ακέραιο και ο τύπος επιστροφής θα είναι επίσης ακέραιος.
Όταν τα δεκαδικά ψηφία, δηλαδή το δεύτερο όρισμα, υπάρχει, θα στρογγυλοποιηθεί στον αριθμό των θέσεων. Ο τύπος επιστροφής θα είναι float.
Εάν ο αριθμός μετά το δεκαδικό ψηφίο που δίνεται
- > = 5 από +1 θα προστεθούν στην τελική τιμή
- <5 από την τελική τιμή θα επιστρέψει καθώς είναι τα δεκαδικά ψηφία που αναφέρονται.
Τιμή επιστροφής
Θα επιστρέψει μια ακέραια τιμή εάν δεν δοθούν τα αριθμητικά_διακριτικά και μια τιμή float εάν δοθούν τα αριθμητικά_εκ. Λάβετε υπόψη ότι η τιμή θα στρογγυλοποιηθεί στο +1 εάν η τιμή μετά το δεκαδικό σημείο είναι> = 5 αλλιώς θα επιστρέψει την τιμή καθώς είναι μέχρι τα δεκαδικά ψηφία που αναφέρονται.
Πόσο αντίκτυπο μπορεί να έχει η στρογγυλοποίηση; (Στρογγυλοποίηση έναντι περικοπής)
Το καλύτερο παράδειγμα για να δείξετε τον αντίκτυπο της στρογγυλοποίησης είναι για το χρηματιστήριο. Στο παρελθόν, δηλαδή το έτος 1982, το Χρηματιστήριο του Βανκούβερ (VSE): συνήθιζε να περικόπτει τις τιμές των μετοχών σε τρία δεκαδικά ψηφία σε κάθε συναλλαγή.
Έγινε σχεδόν 3000 φορές κάθε μέρα. Οι συσσωρευμένες περικοπές οδηγούν σε απώλεια περίπου 25 μονάδων ανά μήνα.
Παρακάτω παρουσιάζεται ένα παράδειγμα περικοπής των τιμών έναντι στρογγυλοποίησης.
Σκεφτείτε τους αριθμούς κινητής υποδιαστολής που δημιουργούνται παρακάτω ως τιμές αποθεμάτων. Αυτή τη στιγμή το δημιουργώ για μια σειρά
1.000.000 δευτερόλεπτα μεταξύ 0,01 και 0,05.
Παραδείγματα:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Για να δείξω τον αντίκτυπο της στρογγυλοποίησης, έχω γράψει ένα μικρό κομμάτι κώδικα όπου στην αρχή, πρέπει να χρησιμοποιήσετε τους αριθμούς έως και μόνο 3 δεκαδικά ψηφία, δηλαδή περικόπτοντας τον αριθμό μετά από 3 δεκαδικά ψηφία.
Έχω την αρχική συνολική τιμή, το σύνολο που προέρχεται από τις περικομμένες τιμές και τη διαφορά μεταξύ της αρχικής και της περικομμένης τιμής.
Στο ίδιο σύνολο αριθμών, έχω χρησιμοποιήσει τη μέθοδο γύρου () έως και 3 δεκαδικά ψηφία και υπολογίζω το άθροισμα και τη διαφορά μεταξύ της αρχικής τιμής και της στρογγυλευμένης τιμής.
Εδώ είναι το παράδειγμα και η έξοδος
Παράδειγμα 1
import randomdef truncate(num):return int(num * 1000) / 1000arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]sum_num = 0sum_truncate = 0for i in arr:sum_num = sum_num + isum_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 = 0sum_truncate1 = 0for i in arr:sum_num1 = sum_num1 + isum_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 placesThe original sum is = 29985.958619386867The total using truncate = 29486.057The difference from original - truncate = 499.9016193868665Testing by using round() up to 3 decimal placesThe original sum is = 29985.958619386867The total using round = 29985.912The difference from original - round = 0.04661938686695066
Η διαφορά μεταξύ πρωτότυπου και μετά το κόψιμο είναι 499.9016193868665 και από στρογγυλή, είναι 0,04661938686695066
Η διαφορά φαίνεται να είναι πολύ μεγάλη και το παράδειγμα δείχνει πως η μέθοδος στρογγυλοποίησης () βοηθά στον υπολογισμό κοντά στην ακρίβεια.
Παράδειγμα: Στρογγυλοποίηση αριθμών πλωτήρα
Σε αυτό το πρόγραμμα, θα δούμε πώς στρογγυλοποιούνται λέξεις σε κυμαινόμενους αριθμούς
# 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 >5float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5print("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 : 11The rounded value without num_of_decimals is : 10The rounded value with num_of_decimals as 2 is : 10.35The rounded value with num_of_decimals as 2 is : 10.34
Παράδειγμα: Στρογγυλοποίηση ακέραιων τιμών
Εάν συμβεί να χρησιμοποιήσετε το γύρο () σε ακέραια τιμή, θα σας επιστρέψει τον αριθμό πίσω χωρίς καμία αλλαγή.
# testing round() on a integernum = 15print("The output is", round(num))
Παραγωγή:
The output is 15
Παράδειγμα: Στρογγυλοποίηση σε αρνητικούς αριθμούς
Ας δούμε μερικά παραδείγματα για το πώς λειτουργεί η στρογγυλοποίηση σε αρνητικούς αριθμούς
# testing round()num = -2.8num1 = -1.5print("The value after rounding is", round(num))print("The value after rounding is", round(num1))
Παραγωγή:
C:\pythontest>python testround.pyThe value after rounding is -3The value after rounding is -2
Παράδειγμα: Στρογγυλές συστοιχίες Numpy
Πώς να στρογγυλοποιήσετε τις αστείες συστοιχίες στο python;
Για να το λύσουμε αυτό, μπορούμε να χρησιμοποιήσουμε τη μονάδα numpy και να χρησιμοποιήσουμε τη μέθοδο numpy.round () ή numpy.around (), όπως φαίνεται στο παρακάτω παράδειγμα.
Χρήση του numpy.round ()
# testing round()import numpy as nparr = [-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 (), το οποίο σας δίνει το ίδιο αποτέλεσμα όπως φαίνεται στο παρακάτω παράδειγμα.
Παράδειγμα: Δεκαδική ενότητα
Εκτός από τη λειτουργία στρογγυλού (), το python διαθέτει δεκαδική μονάδα που βοηθά στον χειρισμό των δεκαδικών αριθμών με μεγαλύτερη ακρίβεια.
Η δεκαδική μονάδα συνοδεύεται από τύπους στρογγυλοποίησης, όπως φαίνεται παρακάτω:
- ROUND_CEILING: θα γυρίσει προς το άπειρο,
- ROUND_DOWN: θα στρογγυλοποιήσει την τιμή στο μηδέν,
- ROUND_FLOOR: θα στρίψει προς -Infinity,
- ROUND_HALF_DOWN: θα στρογγυλοποιηθεί στην πλησιέστερη τιμή που πηγαίνει στο μηδέν,
- ROUND_HALF_EVEN: θα στρογγυλοποιηθεί στο πλησιέστερο με την τιμή να πλησιάζει στον πλησιέστερο ακόμη ακέραιο
- ROUND_HALF_UP: θα στρογγυλοποιηθεί στο πλησιέστερο με τιμή να μηδενίζεται
- ROUND_UP: θα στρογγυλοποιηθεί όπου η τιμή θα πάει από το μηδέν.
Στο δεκαδικό, η μέθοδος quantize () βοηθά στη στρογγυλοποίηση σε έναν σταθερό αριθμό δεκαδικών ψηφίων και μπορείτε να καθορίσετε τη στρογγυλοποίηση που θα χρησιμοποιηθεί, όπως φαίνεται στο παρακάτω παράδειγμα.
Παράδειγμα:
Χρήση στρογγυλών () και δεκαδικών μεθόδων
import decimalround_num = 15.456final_val = round(round_num, 2)#Using decimal modulefinal_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.46Using Decimal - ROUND_CEILING 15.46Using Decimal - ROUND_DOWN 15.45Using Decimal - ROUND_FLOOR 15.45Using Decimal - ROUND_HALF_DOWN 15.46Using Decimal - ROUND_HALF_EVEN 15.46Using Decimal - ROUND_HALF_UP 15.46Using Decimal - ROUND_UP 15.46
Περίληψη:
- Το Round (float_num, Num_of_decimals) είναι μια ενσωματωμένη λειτουργία διαθέσιμη με το python. Θα σας επιστρέψει τον αριθμό float που θα στρογγυλοποιηθεί στα δεκαδικά ψηφία που δίνονται ως είσοδος.
- float_num: ο αριθμός float που θα στρογγυλοποιηθεί.
- Num_of_decimals: Είναι ο αριθμός των δεκαδικών που πρέπει να λαμβάνονται υπόψη κατά τη στρογγυλοποίηση.
- Θα επιστρέψει μια ακέραια τιμή εάν δεν δοθούν τα αριθμητικά_διακριτικά και μια τιμή float εάν δοθούν τα αριθμητικά_εκ.