Python συνάρτηση round() με ΠΑΡΑΔΕΙΓΜΑΤΑ
Στρογγυλό()
Η Round() είναι μια ενσωματωμένη συνάρτηση διαθέσιμη με την python. Θα σας επιστρέψει έναν αριθμό διακύμανσης που θα στρογγυλοποιηθεί στα δεκαδικά ψηφία που δίνονται ως είσοδος.
Εάν τα δεκαδικά ψηφία προς στρογγυλοποίηση δεν καθορίζονται, θεωρείται ως 0 και θα στρογγυλοποιηθεί στον πλησιέστερο ακέραιο.
Σύνταξη
round(float_num, num_of_decimals)
Παράμετροι
- float_num: ο αριθμός float που θα στρογγυλοποιηθεί.
- num_of_decimals: (προαιρετικό) Ο αριθμός των δεκαδικών που πρέπει να λαμβάνεται υπόψη κατά τη στρογγυλοποίηση. Είναι προαιρετικό και αν δεν προσδιορίζεται, ορίζεται από προεπιλογή στο 0 και η στρογγυλοποίηση γίνεται στον πλησιέστερο ακέραιο.
Περιγραφή
Η μέθοδος round() παίρνει δύο ορίσματα
- ο αριθμός που θα στρογγυλοποιηθεί και
- τα δεκαδικά ψηφία που πρέπει να λαμβάνονται υπόψη κατά τη στρογγυλοποίηση.
Το δεύτερο όρισμα είναι προαιρετικό και ορίζεται από προεπιλογή στο 0 όταν δεν καθορίζεται, και σε αυτήν την περίπτωση, θα στρογγυλοποιηθεί στον πλησιέστερο ακέραιο και ο τύπος επιστροφής θα είναι επίσης ακέραιος.
Όταν υπάρχουν τα δεκαδικά ψηφία, δηλαδή το δεύτερο όρισμα, θα στρογγυλοποιηθεί στον αριθμό των θέσεων που δίνονται. Ο τύπος επιστροφής θα είναι float.
Αν δίνεται ο αριθμός μετά το δεκαδικό ψηφίο
- >=5 από + 1 θα προστεθούν στην τελική τιμή
- <5 από την τελική τιμή θα επιστρέψει καθώς είναι μέχρι τα δεκαδικά ψηφία που αναφέρονται.
Τιμή επιστροφής
Θα επιστρέψει μια ακέραια τιμή εάν δεν δίνεται το num_of_decimals και μια float τιμή εάν δοθεί το num_of_decimals. Λάβετε υπόψη ότι η τιμή θα στρογγυλοποιηθεί στο +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, και από στρογγυλό, είναι 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 Arrays
Πώς να στρογγυλοποιήσετε το 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(), το οποίο σας δίνει το ίδιο αποτέλεσμα όπως φαίνεται στο παρακάτω παράδειγμα.
Παράδειγμα: Δεκαδική ενότητα
Εκτός από τη συνάρτηση round(), η python διαθέτει μια δεκαδική ενότητα που βοηθά στον χειρισμό των δεκαδικών αριθμών με μεγαλύτερη ακρίβεια.
Η μονάδα δεκαδικού διατίθεται με τύπους στρογγυλοποίησης, όπως φαίνεται παρακάτω:
- ROUND_CEILING: θα στρογγυλεύεται προς το άπειρο,
- ROUND_DOWN: θα στρογγυλοποιήσει την τιμή προς το μηδέν,
- ROUND_FLOOR: θα στρογγυλοποιηθεί προς το -Άπειρο,
- ROUND_HALF_DOWN: θα στρογγυλοποιηθεί στην πλησιέστερη τιμή προς το μηδέν,
- ROUND_HALF_EVEN: θα στρογγυλοποιηθεί στο πλησιέστερο με την τιμή να πηγαίνει στον πλησιέστερο ζυγό ακέραιο,
- ROUND_HALF_UP: θα στρογγυλοποιηθεί στο πλησιέστερο με την τιμή να απομακρύνεται από το μηδέν
- ROUND_UP: θα στρογγυλοποιηθεί όπου η τιμή θα πάει μακριά από το μηδέν.
Στα δεκαδικά, η μέθοδος 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
Περίληψη
- Το Round(float_num, Num_of_decimals) είναι μια ενσωματωμένη συνάρτηση διαθέσιμη με την python. Θα σας επιστρέψει τον αριθμό float που θα στρογγυλοποιηθεί στα δεκαδικά ψηφία που δίνονται ως είσοδος.
- float_num: ο αριθμός float που θα στρογγυλοποιηθεί.
- Αριθμός_δεκαδικών: Είναι ο αριθμός των δεκαδικών που λαμβάνεται υπόψη κατά τη στρογγυλοποίηση.
- Θα επιστρέψει μια ακέραια τιμή εάν δεν δίνεται το num_of_decimals και μια float τιμή εάν δοθεί το num_of_decimals.
