Πώς να μετατρέψετε μια συμβολοσειρά σε έναν αριθμό σε JavaScript (με παραδείγματα)

Μετατροπή συμβολοσειρών σε αριθμούς

Η parseInt()συνάρτηση αναλύει ένα όρισμα συμβολοσειράς και επιστρέφει έναν ακέραιο αριθμό της καθορισμένης ακτίνας (η βάση στα μαθηματικά αριθμητικά συστήματα).

parseInt(string, radix);

Παράμετροι

string

Η τιμή για ανάλυση. Εάν το stringόρισμα δεν είναι συμβολοσειρά, τότε μετατρέπεται σε συμβολοσειρά (χρησιμοποιώντας την ToStringαφηρημένη λειτουργία). Το κορυφαίο κενό διάστημα στο όρισμα συμβολοσειράς αγνοείται. '= Radix Ένας ακέραιος αριθμός μεταξύ 2 και 36 που αντιπροσωπεύει την ακτίνα (η βάση στα μαθηματικά αριθμητικά συστήματα) της παραπάνω συμβολοσειράς. Καθορίστε 10για το δεκαδικό αριθμητικό σύστημα που χρησιμοποιείται συνήθως από τους ανθρώπους. Να καθορίζετε πάντα αυτήν την παράμετρο για να εξαλείψετε τη σύγχυση του αναγνώστη και να διασφαλίσετε προβλέψιμη συμπεριφορά. Διαφορετικές υλοποιήσεις παράγουν διαφορετικά αποτελέσματα όταν δεν προσδιορίζεται μια ακτίνα, συνήθως προεπιλεγμένη η τιμή σε 10. Επιστροφή τιμή Ένας ακέραιος αριθμός που αναλύεται από τη δεδομένη συμβολοσειρά. Εάν ο πρώτος χαρακτήρας δεν μπορεί να μετατραπεί σε αριθμό, NaNεπιστρέφεται.

Περιγραφή

Η parseIntσυνάρτηση μετατρέπει το πρώτο όρισμα σε μια συμβολοσειρά, την αναλύει και επιστρέφει έναν ακέραιο ή NaN. Εάν όχι NaN, η επιστρεφόμενη τιμή θα είναι ο ακέραιος αριθμός που είναι το πρώτο όρισμα που λαμβάνεται ως αριθμός στην καθορισμένη ακτίνα (βάση). Για παράδειγμα, μια ακτίνα 10 υποδεικνύει τη μετατροπή από έναν δεκαδικό αριθμό, 8 οκταδικές, 16 δεκαεξαδικές και ούτω καθεξής. Για radices παραπάνω 10, τα γράμματα της αλφαβήτου υποδηλώνουν αριθμούς μεγαλύτερο από 9. Για παράδειγμα, για τους αριθμούς δεκαεξαδικό (βάση 16), Aμέσω Fχρησιμοποιείται.

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

Επειδή ορισμένοι αριθμοί περιλαμβάνουν τον eχαρακτήρα στην αναπαράσταση συμβολοσειρών τους (π.χ. 6.022e23), η χρήση parseIntγια περικοπή των αριθμητικών τιμών θα παράγει απρόσμενα αποτελέσματα όταν χρησιμοποιούνται σε πολύ μεγάλους ή πολύ μικρούς αριθμούς. parseIntδεν πρέπει να χρησιμοποιείται ως υποκατάστατο του Math.floor().

Εάν το radix είναι undefinedή 0 (ή απουσιάζει), η JavaScript προϋποθέτει τα εξής:

  • Εάν η είσοδος stringξεκινά με "0x" ή "0X", η ακτίνα είναι 16 (δεκαεξαδική) και το υπόλοιπο της συμβολοσειράς αναλύεται.
  • Εάν η είσοδος stringξεκινά με "0", η ακτίνα είναι οκτώ (οκτάλη) ή 10 (δεκαδική). Ακριβώς ποια ακτίνα επιλέγεται εξαρτάται από την εφαρμογή. Το ECMAScript 5 καθορίζει ότι χρησιμοποιείται 10 (δεκαδικό), αλλά δεν το υποστηρίζουν ακόμη όλα τα προγράμματα περιήγησης. Για αυτόν τον λόγο, καθορίζετε πάντα μια ακτίνα όταν χρησιμοποιείτε το parseInt.
  • Εάν η είσοδος stringξεκινά με οποιαδήποτε άλλη τιμή, η ακτίνα είναι 10 (δεκαδικά).
  • Εάν ο πρώτος χαρακτήρας δεν μπορεί να μετατραπεί σε αριθμό, το parseInt επιστρέφει NaN.

Για αριθμητικούς σκοπούς, η τιμή NaN δεν είναι αριθμός σε οποιαδήποτε ακτίνα. Μπορείτε να καλέσετε τη συνάρτηση isNaN για να προσδιορίσετε εάν το αποτέλεσμα του parseInt είναι NaN. Εάν το NaN μεταφερθεί σε αριθμητικές πράξεις, τα αποτελέσματα της λειτουργίας θα είναι επίσης NaN.

Για να μετατρέψετε τον αριθμό στην συμβολοσειρά κυριολεκτικά σε μια συγκεκριμένη ακτίνα χρησιμοποιήστε το intValue.toString (radix).

Παραδείγματα

Χρησιμοποιώντας τα parseIntακόλουθα παραδείγματα όλα επιστρέφουν 15:

parseInt(' 0xF', 16); parseInt(' F', 16); parseInt('17', 8); parseInt(021, 8); parseInt('015', 10); // parseInt(015, 10); will return 15 parseInt(15.99, 10); parseInt('15,123', 10); parseInt('FXX123', 16); parseInt('1111', 2); parseInt('15 * 3', 10); parseInt('15e2', 10); parseInt('15px', 10); parseInt('12', 13);

Όλα τα ακόλουθα παραδείγματα επιστρέφουν NaN:

parseInt('Hello', 8); // Not a number at all parseInt('546', 2); // Digits are not valid for binary representations

Όλα τα ακόλουθα παραδείγματα επιστρέφουν -15:

parseInt('-F', 16); parseInt('-0F', 16); parseInt('-0XF', 16); parseInt(-15.1, 10) parseInt(' -17', 8); parseInt(' -15', 10); parseInt('-1111', 2); parseInt('-15e1', 10); parseInt('-12', 13);

Όλα τα ακόλουθα παραδείγματα επιστρέφουν 4:

parseInt(4.7, 10); parseInt(4.7 * 1e22, 10); // Very large number becomes 4 parseInt(0.00000000000434, 10); // Very small number becomes 4

Το ακόλουθο παράδειγμα επιστρέφει 224:

parseInt('0e0', 16);

Περισσότερες πληροφορίες:

parseInt στο MDN

  • parseInt () και parseFloat () προσπαθούν να μετατρέψουν τη συμβολοσειρά σε αριθμό, εάν είναι δυνατόν. Για παράδειγμα,var x = parseInt("100"); // x = 100
  • Ο αριθμός () θα μετατραπεί σε έναν αριθμό στην οποία μπορεί να αναπαριστάται η τιμή. Αυτό περιλαμβάνει ημερομηνίες στον αριθμό χιλιοστών του δευτερολέπτου από τα μεσάνυχτα 1 Ιανουαρίου 1970 UTC, τιμές boolean σε 1 ή 0 και τιμές που δεν μπορούν να μετατραπούν σε αναγνωρίσιμο αριθμό θα γίνουν NaN. Αυτό σημαίνει Όχι Αριθμός και τεχνικά επίσης αριθμός!