Ένας integer είναι ένας αριθμός του συνόλου Z = {..., -2, -1, 0, 1, 2, ...}.
Δείτε επίσης: Ακέραιοι αυθαίρετου μεγέθους / GMP, Αριθμού κινητής υποδιαστολής, και Αυθαίρετη ακρίβεια / BCMath
Οι ακέραιοι μπορούν να καθοριστούν στο δεκαδικό (με βάση το 10), δεκαεξαδικό (με βάση το 16) ή οκταδικό (με βάση το 8) σύστημα, και προαιρετικά μπορεί να προστεθεί το πρόσημο (- ή +).
Αν χρησιμοποιείτε το οκταδικό σύστημα, πρέπει να γράφετε πριν το αριθμό το 0 (μηδέν), και αν χρησιμοποιείτε το δεκαεξαδικό πρέπει να γράφετε πριν τον αριθμό το 0x.
Αν προσδιορίσετε έναν αριθμός εκτός των ορίων του τύπου integer, θα διερμηνευτεί ως float (κινητής υποδιαστολής). Επίσης, αν κάνετε μια πράξη το αποτέλεσμα της οποίας δίνει αριθμό πέρα από τα όρια του τύπου integer, θα επιστραφεί αριθμός τύπου float (κινητής υποδιαστολής).
<?php |
Ðñïåéäïðïßçóç |
Δυστυχώς, υπήρχε ένα bug στην PHP με αποτέλεσμα αυτό να μην λειτουργεί παντα σωστά όταν υπάρχουν αρνητικοί αριθμοί. Για παράδειγμα: όταν κάνετε -50000 * $million, το αποτέλεσμα θα είναι -429496728. Σε περίπτωση βέβαια που και οι δυο τελεστές είναι θετικοί δεν υπάρχει πρόβλημα. Αυτό λύθηκε στην PHP 4.1.0. |
Δεν υπάρχει τελεστής διαίρεσης στην PHP. Το 1/2 μετατρέπεται στον αριθμό float 0.5. Μπορείτε να μετατρέψετε την τιμή σε ακέραιο να το στρογγυλοποιήσετε προς τα κάτω, ή να χρησιμοποιήσετε τη συνάρτηση round() .
Για να μετατρέψετε ρητά μια τιμή σε integer, χρησιμοποιήστε είτε το (int) είτε το (integer) για τη μετατροπή (cast). Πάντως, στις περισσότερες περιπτώσεις δεν χρειάζεται να χρησιμοποιήσετε την cast, αφού η τιμή θα μετατραπεί αυτόματα αν ένας τελεστής, μια συνάρτηση ή μια δομή ελέγχου απαιτεί μια παράμετρο τύπου integer . Μπορείτε επίσης να μετατρέψετε μια τιμή σε ακέραιο μέσα στη συνάρτηση intval().
Δείτε επίσης type-juggling.
Όταν γίνεται μετατροπή από αριθμού κινητής υποδιαστολής σε ακέραιο, ο αριθμός θα στρογγυλευτεί προς το μηδέν.
Αν ο αριθμός κινητής υποδιαστολής είναι εκτός των ορίων του ακεραίου (συνήθως +/- 2.15e+9 = 2^31), το αποτέλεσμα είναι απροσδιόριστο, αφού ο αριθμός κινητής υποδιαστολής δεν έχει αρκετή ακρίβεια για να δώσει ένα ακριβές ακέραιο αποτέλεσμα. Καμιά προειδοποίηση, ούτε κάποια άλλη υπενθύμιση γίνεται σε τέτοιες περιπτώσεις!
Ðñïåéäïðïßçóç |
Ποτέ μην αλλάζετε τον τύπο μιας παράστασης σε integer, αφού αυτό μπορεί μερικές φορές να οδηγήσει σε μη αναμενόμενα αποτελέσματα. Για περισσότερες πληροφορίες δείτε σχετικά με τιςπροειδοποιήσεις για την ακρίβεια αριθμών κινητής υποδιαστολής. |
Ðñïóï÷Þ |
Ο τρόπος με τον οποίο γίνεται η μετατροπή σε ακέραιο δεν είναι καθορισμένος για άλλους τύπους. Προς το παρόν, η μετατροπή γίνεται θεωρώντας ότι η τιμή πρώτα μετατρέπεται σε boolean. Πάντως, μην βασίζεστε σε αυτόν τον τρόπο, αφού μπορεί να αλλάξει χωρίς προειδοποίηση. |