Πώς να στρογγυλοποιήσετε τους αριθμούς στην Python [With Examples]

Εργάζεστε με αριθμούς τύπους δεδομένων στην Python; Ανεβείτε επίπεδο μαθαίνοντας τους διαφορετικούς τρόπους στρογγυλοποίησης αριθμών στην Python.

Τα περισσότερα δεδομένα του πραγματικού κόσμου περιέχουν αριθμητικά καθώς και κατηγορικά χαρακτηριστικά. Υπάρχει ένα ευρύ φάσμα αριθμητικών χαρακτηριστικών, από μετρήσεις αισθητήρων έως συναλλαγματικές ισοτιμίες, βιοϊατρικά σήματα και πολλά άλλα.

Όταν εργάζεστε με αριθμητικές τιμές, μπορεί να χρειαστεί να στρογγυλοποιήσετε αυτές τις τιμές σε μια σταθερή ακρίβεια για λόγους όπως:

  • Εξασφάλιση συνεπούς μορφής
  • Ευκολότερη αποθήκευση και επεξεργασία

Σε αυτό το σεμινάριο, θα μάθουμε τους διαφορετικούς τρόπους στρογγυλοποίησης ενός αριθμού σε μια συγκεκριμένη ακρίβεια, στρογγυλοποίησης προς τα πάνω και προς τα κάτω αριθμών στον πλησιέστερο ακέραιο και πολλά άλλα.

Ας αρχίσουμε.

Τρόπος στρογγυλοποίησης αριθμών χρησιμοποιώντας την ενσωματωμένη συνάρτηση round().

Η πιο κοινή μέθοδος στρογγυλοποίησης αριθμών στην Python είναι η χρήση του ενσωματωμένου συνάρτηση round().. Ας ξεκινήσουμε μαθαίνοντας τη σύνταξή του:

round(num, ndigits)

Εδώ,

  • num είναι ο αριθμός που θέλετε να στρογγυλοποιήσετε
  • Το ndigits είναι μια προαιρετική παράμετρος με προεπιλεγμένη τιμή None. Είναι ο αριθμός των θέσεων στις οποίες πρέπει να στρογγυλοποιηθεί ο αριθμός. Εάν nψηφία = 2, το num στρογγυλοποιείται σε δύο θέσεις μετά την υποδιαστολή.
  • Η συνάρτηση round() επιστρέφει αριθμητική στρογγυλοποίηση σε nψηφία ακρίβεια μετά την υποδιαστολή.

Παραδείγματα χρήσης συνάρτησης Python round().

Ας κωδικοποιήσουμε μερικά παραδείγματα για να κατανοήσουμε πώς λειτουργεί η συνάρτηση round().

Όπως αναφέρθηκε, το ndigits είναι προαιρετικό. Έτσι, όταν καλούμε round() μόνο με τον αριθμό, ο αριθμός στρογγυλοποιείται στον πλησιέστερο ακέραιο.

number = 7.123456
rounded = round(number)  
print(rounded)
# Output: 7

Ας πάρουμε τώρα μερικά παραδείγματα όπου καθορίζουμε την ακρίβεια.

Όταν τα nψηφία έχουν οριστεί στο 2, ο αριθμός στρογγυλοποιείται σε δύο δεκαδικά ψηφία (δέκατη θέση):

number = 7.123456
rounded = round(number, 2)  
print(rounded)
# Output: 7.12

Όταν τα nψηφία έχουν οριστεί στο 3, ο αριθμός στρογγυλοποιείται σε τρία δεκαδικά ψηφία (εκατοστό μέρος):

number = 7.123456
rounded = round(number, 3)  
print(rounded)
# Output: 7.123

Μπορείτε επίσης να χρησιμοποιήσετε το round() για να στρογγυλοποιήσετε αρνητικούς αριθμούς:

number = -3.4
rounded = round(number)
print(rounded) 
# Output: -3

Εδώ, η συνάρτηση στρογγυλοποιεί το -3,4 στο -3, τον πλησιέστερο ακέραιο.

  Προσθέστε έναν χάρτη σε περιοχές εκτός σύνδεσης στους Χάρτες Google και χρησιμοποιήστε τον όταν δεν υπάρχει Διαδίκτυο

Στρογγυλοποίηση στην πλησιέστερη θέση δεκάδων και εκατοντάδων

Γνωρίζατε ότι τα nψηφία μπορούν επίσης να λάβουν αρνητικές τιμές;

Ναι, μπορείτε να καλέσετε τη συνάρτηση round() με αρνητικές τιμές για nψηφία. Όταν το κάνετε αυτό, η στρογγυλοποίηση συμβαίνει στα αριστερά της υποδιαστολής αντί για τη δεξιά.

Τι σημαίνει αυτό? Ας δούμε μερικά παραδείγματα.

Όταν ορίσουμε τα nψηφία σε -1, ο αριθμός στρογγυλοποιείται στο πλησιέστερο δεκάρι.

number = 7.123456
rounded = round(number, -1)  
print(rounded)
# Output: 10.0

Και καλώντας τη συνάρτηση round() με nψηφία ρυθμισμένα σε -2 στρογγυλοποιεί τον αριθμό 77.123456 στην πλησιέστερη εκατοντάδα, που σε αυτήν την περίπτωση είναι 100.0.

number = 77.123456
rounded = round(number, -2)  
print(rounded)
# Output: 100.0

Μέχρι στιγμής, η συνάρτηση round() φαίνεται να ακολουθεί τις γενικές αρχές στρογγυλοποίησης που έχουμε μάθει στα σχολικά μαθηματικά. Αλλά αυτό δεν συμβαίνει πάντα.

Υπάρχουν μερικά περιορισμούς με κινητή υποδιαστολή αριθμοί. Επομένως, μπορεί να δείτε κάποια απροσδόκητα αποτελέσματα κατά τη στρογγυλοποίηση. Μια άλλη ενδιαφέρουσα προειδοποίηση είναι η στρογγυλοποίηση του τραπεζίτη.

Τι είναι το Banker’s Rounding;

Ξεκινήστε μια Python REPL και δοκιμάστε το ακόλουθο παράδειγμα:

>>> round(1.5)
2

Βλέπουμε ότι ο γύρος (1,5) επιστρέφει 2 (όπως αναμενόταν). Τι πρέπει λοιπόν να επιστρέψει ο γύρος (2,5);

>>> round(2.5)
2

Ενδιαφέρον, ναι; Και ο γύρος (1.5) και ο γύρος (2.5) επιστρέφουν 2. Πώς και γιατί;

Εσωτερικά, η στρογγυλή συνάρτηση λειτουργεί έτσι: κάθε τιμή που βρίσκεται στο μέσον μεταξύ δύο ακεραίων στρογγυλοποιείται στον πλησιέστερο ζυγό ακέραιο. Αυτό ονομάζεται στρογγυλοποίηση τραπεζίτη ή το στρογγυλό μισό έως ακόμη στρατηγική.

Γνωρίζουμε ότι η συνάρτηση round() αρκεί για απλές εργασίες στρογγυλοποίησης. Αλλά μερικές φορές, μπορεί να χρειαστεί να στρογγυλοποιήσετε προς τα πάνω ή προς τα κάτω έναν αριθμό στον πλησιέστερο ακέραιο.

Λοιπόν, πώς το κάνετε αυτό; Ας το μάθουμε αυτό στην επόμενη ενότητα.

Πώς να στρογγυλοποιήσετε τους αριθμούς στην Python

Για να στρογγυλοποιήσετε έναν αριθμό στον πλησιέστερο ακέραιο, μπορείτε να χρησιμοποιήσετε:

  Πώς να διαγράψετε μια συσκευή από το Find My

Χρήση math.ceil

Η συνάρτηση ceil() (ή η συνάρτηση οροφής) λειτουργεί ως εξής: Στρογγυλοποιεί έναν αριθμό στον μικρότερο ακέραιο που είναι μεγαλύτερος από τον αριθμό.

Το παρακάτω απόσπασμα δείχνει πώς να χρησιμοποιήσετε τη συνάρτηση ceil() για να στρογγυλοποιήσετε τον αριθμό 3.2:

import math

number = 3.2
rounded_up = math.ceil(number)
print(rounded_up)  
# Output: 4

Χρησιμοποιώντας τη μονάδα δεκαδικού

Μέχρι στιγμής, χρησιμοποιούσαμε τον ενσωματωμένο τύπο δεδομένων float. Αλλά για ορισμένες εφαρμογές στην επιστημονική πληροφορική και τη χρηματοοικονομική, χρειαζόμαστε πολύ μεγαλύτερη ακρίβεια. Και για αυτό, η Python αποστέλλεται με την δεκαδική ενότητα που παρέχει:

  • Πιο ακριβής αριθμητική κινητής υποδιαστολής
  • Αξιόπιστη δοκιμή ισότητας
  • Λεπτότερος έλεγχος στο επίπεδο ακρίβειας (η προεπιλεγμένη ακρίβεια είναι 28 θέσεις)

Για να δείτε το τρέχον περιβάλλον, χρησιμοποιώντας την getcontext() όπως φαίνεται:

from decimal import getcontext
current_context = getcontext()
print(current_context)

Θα πρέπει να μπορείτε να δείτε την τρέχουσα λειτουργία ακριβείας και στρογγυλοποίησης, μεταξύ άλλων:

# Output
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, 
capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

Για να στρογγυλοποιήσετε έναν αριθμό, μπορείτε να χρησιμοποιήσετε την quantize() προσδιορίζοντας:

  • Η ακρίβεια (0,0 αφού θέλουμε να στρογγυλοποιήσουμε στον πλησιέστερο ακέραιο) και
  • Η λειτουργία στρογγυλοποίησης: ROUND_CEILING
from decimal import Decimal, ROUND_CEILING

number = Decimal('3.2')
rounded_up = number.quantize(Decimal('0'), rounding=ROUND_CEILING)
print(rounded_up)  
# Output: 4

Εδώ, ο αριθμός 3.2 έχει στρογγυλοποιηθεί στον πλησιέστερο ακέραιο αριθμό 4.

Πώς να στρογγυλοποιήσετε τους αριθμούς στην Python

Τώρα, ας δούμε πώς να στρογγυλοποιούμε τους αριθμούς στην Python. Παρόμοια με τη διαδικασία στρογγυλοποίησης, μπορούμε να χρησιμοποιήσουμε είτε τα μαθηματικά είτε τις δεκαδικές ενότητες.

Χρήση math.floor

Η συνάρτηση floor() από την ενότητα μαθηματικών λειτουργεί ως εξής: Στρογγυλοποιεί προς τα κάτω έναν αριθμό στον μεγαλύτερο ακέραιο που είναι μικρότερος από τον αριθμό.

Ας πάρουμε το ακόλουθο παράδειγμα:

import math

number = 3.8
rounded_down = math.floor(number)
print(rounded_down)  
# Output: 3

Εδώ, η συνάρτηση floor() στρογγυλοποιεί προς τα κάτω τον αριθμό κινητής υποδιαστολής 3.8 στο 3.

Χρησιμοποιώντας τη μονάδα δεκαδικού

Για να στρογγυλοποιήσετε έναν αριθμό προς τα κάτω, μπορείτε να χρησιμοποιήσετε το quantize() ρυθμίζοντας τη λειτουργία στρογγυλοποίησης σε ROUND_FLOOR.

from decimal import Decimal, ROUND_FLOOR

number = Decimal('3.8')
rounded_down = number.quantize(Decimal('0'), rounding=ROUND_FLOOR)
print(rounded_down)  
# Output: 3

Όπως φαίνεται, το 3,8 έχει στρογγυλοποιηθεί στο 3.

Συνήθεις παγίδες που πρέπει να αποφεύγετε κατά τη στρογγυλοποίηση αριθμών

Έχουμε ήδη δει ότι η συνάρτηση round() στρογγυλοποιείται από το μισό έως το ζυγό, κάτι που μπορεί να μην είναι πάντα επιθυμητό. Υπάρχουν κάποιες άλλες κοινές παγίδες που πρέπει να αποφύγετε κατά τη στρογγυλοποίηση αριθμών στην Python:

  • Λανθασμένη σύγκριση ισότητας: Οι στρογγυλοποιήσεις αριθμών συχνά εισάγουν σφάλματα στρογγυλοποίησης. Εάν προσπαθήσετε να εκτελέσετε μια σύγκριση ισότητας μεταξύ ενός στρογγυλοποιημένου αποτελέσματος με μια άλλη τιμή, ο έλεγχος ισότητας θα αποτυγχάνει (σχεδόν πάντα) λόγω διαφορετικής ακρίβειας. Προσπαθήστε λοιπόν να αποφύγετε τους ελέγχους ισότητας μεταξύ αριθμών κινητής υποδιαστολής και στρογγυλεμένων αριθμών κινητής υποδιαστολής. Εάν η σύγκριση είναι απαραίτητη, τότε εισάγετε ένα όριο ανοχής.
  • Απώλεια πληροφοριών: Μπορεί να θέλετε ορισμένα δεδομένα, όπως μετρήσεις αισθητήρων σε διαφορετικές χρονικές σημάνσεις, να καταγράφονται με υψηλή ακρίβεια. Η στρογγυλοποίηση τέτοιων δεδομένων σε λιγότερα δεκαδικά ψηφία οδηγεί σε απώλεια πληροφοριών και εσφαλμένη ανάλυση.
  • Στρογγυλοποίηση ενδιάμεσων αποτελεσμάτων: Θα έχετε συχνά πολλά βήματα ως μέρος του υπολογισμού. Χρησιμοποιήστε σταθερή ακρίβεια σε όλα τα βήματα. Επίσης, αποφύγετε τη στρογγυλοποίηση σε ενδιάμεσα βήματα για να αποτρέψετε τη σύμμειξη των σφαλμάτων στρογγυλοποίησης.
  Πώς να ενεργοποιήσετε ένα παράθυρο προεπισκόπησης στο Gmail

Βέλτιστες πρακτικές για στρογγυλοποίηση αριθμών στην Python

Ας παραθέσουμε μερικές βέλτιστες πρακτικές που πρέπει να ακολουθήσετε κατά τη στρογγυλοποίηση αριθμών στην Python:

  • Επιλέξτε τον σωστό τύπο δεδομένων: Επιλέξτε μεταξύ τύπων δεδομένων float και δεκαδικών ανάλογα με την εφαρμογή. Εάν χρειάζεται να εκτελέσετε αριθμητική κινητής υποδιαστολής υψηλής ακρίβειας, επιλέξτε δεκαδικό τύπο δεδομένων.
  • Χρήση σταθερών επιπέδων ακρίβειας: Ορίστε σταθερά επίπεδα ακρίβειας για δεκαδικούς αριθμούς σε ολόκληρο το πρόγραμμα για να αποφύγετε απροσδόκητα σφάλματα στρογγυλοποίησης.
  • Τεχνικές στρογγυλοποίησης εγγράφων: Σε πραγματικές εφαρμογές που περιλαμβάνουν δεδομένα όπως μετρήσεις νομισμάτων και αισθητήρων, είναι σημαντικό να υπάρχει μια συνεπής και τεκμηριωμένη τεχνική στρογγυλοποίησης.

Τυλίγοντας

Ας ολοκληρώσουμε το σεμινάριο με μια γρήγορη ανασκόπηση των όσων μάθαμε:

  • Μπορείτε να χρησιμοποιήσετε την ενσωματωμένη συνάρτηση round() με αυτήν τη σύνταξη round (αριθμός, nψηφία). Όταν χρησιμοποιείτε τη συνάρτηση round(), θα πρέπει να γνωρίζετε τη στρατηγική στρογγυλοποίησης του τραπεζίτη. Έτσι, στρογγυλοποιεί αριθμούς ακριβώς μεταξύ δύο ακεραίων στον πλησιέστερο ζυγό ακέραιο.
  • Μπορείτε να χρησιμοποιήσετε τις συναρτήσεις ceil() και floor() από τη μαθηματική ενότητα για να στρογγυλοποιήσετε προς τα πάνω και προς τα κάτω έναν δεδομένο αριθμό στον πλησιέστερο ακέραιο αριθμό, αντίστοιχα.
  • Όταν χρειάζεται να εκτελέσετε αριθμητική κινητής υποδιαστολής υψηλής ακρίβειας, χρησιμοποιήστε τη δεκαδική μονάδα. Μπορείτε να στρογγυλοποιήσετε αριθμούς με την απαιτούμενη ακρίβεια και στρατηγική στρογγυλοποίησης.
  • Θα πρέπει να γνωρίζετε κοινές παγίδες με στρογγυλοποίηση αριθμών στην Python. Αυτά περιλαμβάνουν απώλεια πληροφοριών από στρογγυλοποίηση, στρογγυλοποίηση αποτελεσμάτων σε ενδιάμεσα βήματα και χρήση διαφορετικής ακρίβειας σε διαφορετικά μέρη του κώδικα.
  • Οι βέλτιστες πρακτικές περιλαμβάνουν την επιλογή του σωστού τύπου δεδομένων ανάλογα με την εφαρμογή και την τεκμηρίωση σταθερών επιπέδων ακρίβειας.

Στη συνέχεια, μάθετε πώς να εκτελείτε διαίρεση ορόφων στην Python.

‘Ηταν αυτό το άρθρο χρήσιμο?

Ευχαριστούμε για την ανταπόκρισή σας!