Ψάχνω για ελάχιστες και μέγιστες τιμές για ακέραιους αριθμούς στην python. Για παράδειγμα, στη Java, έχουμε τα Integer.MIN_VALUE
και Integer.MAX_VALUE
. Υπάρχει κάτι τέτοιο στην python;
Στην Python 3, αυτή η ερώτηση δεν ισχύει. Ο απλός τύπος int
είναι απεριόριστος.
Ωστόσο, μπορεί στην πραγματικότητα να ψάχνετε για το μέγεθος λέξης της μηχανής. Αυτό είναι ακόμα διαθέσιμο στην Python 3 ως sys.maxsize
.
Στην Python 2, η μέγιστη τιμή για απλές τιμές int
είναι διαθέσιμη ως sys.maxint
:
>>> sys.maxint
9223372036854775807
Μπορείτε να υπολογίσετε την ελάχιστη τιμή με -sys.maxint - 1
όπως φαίνεται εδώ.
Η Python μεταβαίνει απρόσκοπτα από απλούς σε μεγάλους ακέραιους αριθμούς μόλις υπερβείτε αυτή την τιμή. Έτσι, τις περισσότερες φορές, δεν θα χρειαστεί να το γνωρίζετε.
Η σταθερά sys.maxint έχει αφαιρεθεί από την Python 3.0 και μετά, χρησιμοποιήστε αντ' αυτού τη σταθερά sys.maxsize
Ακέραιοι >,
- PEP 237: Ουσιαστικά, η long μετονομάστηκε σε int. Δηλαδή, υπάρχει μόνο ένας ενσωματωμένος ολοκληρωτικός τύπος, με το όνομα int- αλλά συμπεριφέρεται κυρίως όπως ο παλιός τύπος long.
- PEP 238: Μια έκφραση όπως 1/2 επιστρέφει ένα float. Χρησιμοποιήστε 1//2 για να έχετε τη συμπεριφορά αποκοπής. (Η τελευταία σύνταξη υπάρχει εδώ και χρόνια, στο τουλάχιστον από την Python 2.2).
- Η σταθερά sys.maxint αφαιρέθηκε, καθώς δεν υπάρχει πλέον όριο στην τιμή των ακεραίων. Ωστόσο, η sys.maxsize μπορεί να χρησιμοποιηθεί ως ακέραιος μεγαλύτερος από κάθε πρακτικό δείκτη λίστας ή συμβολοσειράς. Συμμορφώνεται με την το "φυσικό" ακέραιο μέγεθος της υλοποίησης και είναι συνήθως το ίδιο με τον sys.maxint σε προηγούμενες εκδόσεις στην ίδια πλατφόρμα (υποθέτοντας ότι η ίδιες επιλογές κατασκευής).
- Η repr() ενός ακεραίου long δεν περιλαμβάνει πλέον το L στο τέλος, οπότε ο κώδικας που απογυμνώνει άνευ όρων αυτόν τον χαρακτήρα θα κόψει το τελευταίο ψηφίο αντί αυτού. (Χρησιμοποιήστε αντί αυτού την str().)
- Τα οκταδικά γράμματα δεν είναι πλέον της μορφής 0720- χρησιμοποιήστε 0o720.
Παραπομπή : https://docs.python.org/3/whatsnew/3.0.html
Στην Python οι ακέραιοι αριθμοί θα μεταβούν αυτόματα από μια αναπαράσταση σταθερού μεγέθους int
σε μια αναπαράσταση μεταβλητού πλάτους long
μόλις περάσετε την τιμή sys.maxint
, η οποία είναι είτε 231 - 1 είτε 263 - 1 ανάλογα με την πλατφόρμα σας. Παρατηρήστε το "L" που προστίθεται εδώ:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
Από το εγχειρίδιο της Python:
Οι αριθμοί δημιουργούνται από αριθμητικά literals ή ως αποτέλεσμα ενσωματωμένων συναρτήσεων και τελεστών. Οι ακομμάτιστοι ακέραιοι κυριολεκτικοί αριθμοί (συμπεριλαμβανομένων των δυαδικών, δεκαεξαδικών και οκταδικών αριθμών) δίνουν απλούς ακέραιους αριθμούς, εκτός αν η τιμή που δηλώνουν είναι πολύ μεγάλη για να αναπαρασταθεί ως απλός ακέραιος, οπότε δίνουν έναν μακρύ ακέραιο. Οι ακέραιοι κυριολεκτικοί αριθμοί με κατάληξη
'L'
ή'l'
αποδίδουν μεγάλους ακέραιους αριθμούς (το'L'
προτιμάται επειδή το1l
μοιάζει πάρα πολύ με έντεκα!).
Η Python προσπαθεί πολύ σκληρά να προσποιηθεί ότι οι ακέραιοι αριθμοί της είναι μαθηματικοί ακέραιοι και είναι απεριόριστοι. Μπορεί, για παράδειγμα, να υπολογίσει ένα googol με ευκολία:
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L