Σύνταξη JavaScript parseInt: παραδείγματα χρήσης. Χρησιμοποιώντας τη μέθοδο parseInt

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

Η πηγή για αυτό το διαδραστικό παράδειγμα αποθηκεύεται σε ένα αποθετήριο GitHub. Εάν θέλετε να συνεισφέρετε στο έργο διαδραστικών παραδειγμάτων, κλωνοποιήστε τη διεύθυνση https://github.com/mdn/interactive-examples και στείλτε μας ένα αίτημα έλξης.

Σύνταξη parseInt( σειρά, ρίζα) Συμβολοσειρά παραμέτρων Η τιμή προς ανάλυση. Εάν το όρισμα συμβολοσειράς δεν είναι συμβολοσειρά, τότε μετατρέπεται σε συμβολοσειρά (χρησιμοποιώντας την αφηρημένη λειτουργία ToString). Το κύριο κενό διάστημα στο όρισμα συμβολοσειράς αγνοείται. radix Ένας ακέραιος αριθμός μεταξύ 2 και 36 που αντιπροσωπεύει την ρίζα (τη βάση στα μαθηματικά αριθμητικά συστήματα) της παραπάνω συμβολοσειράς. Η περιγραφήπαρακάτω εξηγεί με περισσότερες λεπτομέρειες τι συμβαίνει όταν δεν παρέχεται αυτό το επιχείρημα. Επιστρεφόμενη αξία

Ένας ακέραιος αριθμός αναλυμένος από τη δεδομένη συμβολοσειρά. Εάν ο πρώτος χαρακτήρας δεν μπορεί να μετατραπεί σε αριθμό, επιστρέφεται το NaN.

Περιγραφή

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

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

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

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

  • Εάν η συμβολοσειρά εισόδου ξεκινά με "0x" ή "0X", η ρίζα είναι 16 (δεκαεξαδική) και το υπόλοιπο της συμβολοσειράς αναλύεται.
  • Εάν η συμβολοσειρά εισόδου ξεκινά με "0", η ρίζα είναι οκτώ (οκταδική) ή 10 (δεκαδική). Το ποιο ακριβώς radix επιλέγεται εξαρτάται από την υλοποίηση. Το ECMAScript 5 καθορίζει ότι χρησιμοποιείται το 10 (δεκαδικό), αλλά δεν το υποστηρίζουν ακόμη όλα τα προγράμματα περιήγησης. Για αυτόν τον λόγο να προσδιορίζετε πάντα μια βάση όταν χρησιμοποιείτε το parseInt.
  • Εάν η συμβολοσειρά εισόδου ξεκινά με οποιαδήποτε άλλη τιμή, η ρίζα είναι 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); θα επιστρέψει 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); // Καθόλου αριθμός parseInt("546", 2); // Ψηφία δεν είναιισχύει για δυαδικές αναπαραστάσεις

Τα ακόλουθα παραδείγματα επιστρέφουν όλα -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); // Ο πολύ μεγάλος αριθμός γίνεται 4 parseInt(0.00000000000434, 10); // Πολύ μικρός αριθμός γίνεται 4

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

ParseInt("0e0", 16);

Οκταδικές ερμηνείες χωρίς ρίζα

Παρόλο που αποθαρρύνονται από το ECMAScript 3 και απαγορεύονται από το ECMAScript 5, πολλές υλοποιήσεις ερμηνεύουν μια αριθμητική συμβολοσειρά που αρχίζει με το 0 στην αρχή ως οκταδική. Το ακόλουθο μπορεί να έχειένα οκταδικό αποτέλεσμα ή μπορεί να έχει δεκαδικό αποτέλεσμα. Καθορίζετε πάντα μια βάση για να αποφύγετε αυτήν την αναξιόπιστη συμπεριφορά.

ParseInt("0e0"); // 0 parseInt("08"); // 0, το "8" δεν είναι οκταδικό ψηφίο.

Το ECMAScript 5 καταργεί την οκταδική ερμηνεία

Η προδιαγραφή ECMAScript 5 της συνάρτησης parseInt δεν επιτρέπει πλέον στις υλοποιήσεις να αντιμετωπίζουν τις συμβολοσειρές που ξεκινούν με χαρακτήρα 0 ως οκταδικές τιμές. Το ECMAScript 5 αναφέρει:

Η συνάρτηση parseInt παράγει μια ακέραια τιμή που υπαγορεύεται από την ερμηνεία των περιεχομένων του ορίσματος συμβολοσειράς σύμφωνα με την καθορισμένη ρίζα. Το πρώτο λευκό διάστημα στη συμβολοσειρά αγνοείται. Εάν η ρίζα είναι απροσδιόριστη ή 0, θεωρείται ότι είναι 10, εκτός από την περίπτωση που ο αριθμός αρχίζει με τα ζεύγη χαρακτήρων 0x ή 0X, οπότε θεωρείται ρίζα 16.

Αυτό διαφέρει από το ECMAScript 3, το οποίο αποθαρρύνθηκε αλλά επέτρεψε την οκταδική ερμηνεία.

Πολλές υλοποιήσεις δεν έχουν υιοθετήσει αυτήν τη συμπεριφορά από το 2013 και επειδή πρέπει να υποστηρίζονται παλαιότερα προγράμματα περιήγησης, να ορίζετε πάντα μια βάση .

Μια πιο αυστηρή συνάρτηση ανάλυσης

Μερικές φορές είναι χρήσιμο να έχετε έναν πιο αυστηρό τρόπο ανάλυσης των τιμών int. Οι κανονικές εκφράσεις μπορούν να βοηθήσουν:

Var filterInt = συνάρτηση(τιμή) (if (/^(-|\+)?(\d+|Infinity)$/.test(value)) return Number(value); return NaN; ) console.log(filterInt (" 421")); // 421 console.log(filterInt("-421")); // -421 console.log(filterInt("+421")); // 421 console.log(filterInt("Infinity")); // Infinity console.log(filterInt("421e+0")); // NaN console.log(filterInt("421hop")); // NaN console.log(filterInt("hop1.61803398875")); // NaN console.log(filterInt("1.61803398875")); // NaN

Προδιαγραφές Σχόλιο κατάστασης προδιαγραφών
ECMAScript 1st Edition (ECMA-262) Πρότυπο Αρχικός ορισμός.
ECMAScript 5.1 (ECMA-262)
Πρότυπο
ECMAScript 2015 (6η Έκδοση, ECMA-262)
Ο ορισμός του "parseInt" σε αυτήν την προδιαγραφή.
Πρότυπο
Τελευταίο προσχέδιο ECMAScript (ECMA-262)
Ο ορισμός του "parseInt" σε αυτήν την προδιαγραφή.
Προσχέδιο
Συμβατότητα προγράμματος περιήγησης

Ο πίνακας συμβατότητας σε αυτήν τη σελίδα δημιουργείται από δομημένα δεδομένα. Εάν θέλετε να συνεισφέρετε στα δεδομένα, ανατρέξτε στη διεύθυνση https://github.com/mdn/browser-compat-data και στείλτε μας ένα αίτημα έλξης.

Ενημερώστε τα δεδομένα συμβατότητας στο GitHub

Διακομιστής φορητών υπολογιστών Chrome Edge Firefox Internet Explorer Opera Safari Android Προβολή ιστού Chrome για Android Edge Mobile Firefox για Android Opera για Android Safari σε iOS Samsung Internet Node.jsparseInt Οι αναλύσεις των συμβολοσειρών αρχικών-μηδενικών είναι δεκαδικές, όχι οκταδικές
Chrome Πλήρης υποστήριξη ΝαιEdge Πλήρης υποστήριξη ΝαιΠλήρης υποστήριξη Firefox 1IE Πλήρης υποστήριξη ΝαιOpera Πλήρης υποστήριξη ΝαιSafari Πλήρης υποστήριξη ΝαιWebView Android Πλήρης υποστήριξη ΝαιFirefox Android Πλήρης υποστήριξη 4Safari iOS Πλήρης υποστήριξη Ναιnodejs Πλήρης υποστήριξη Ναι
Πλήρης υποστήριξη Chrome 23Edge Πλήρης υποστήριξη ΝαιΠλήρης υποστήριξη Firefox 21IE Πλήρης υποστήριξη 9Opera Πλήρης υποστήριξη ΝαιΠλήρης υποστήριξη Safari 6WebView Android Πλήρης υποστήριξη 4.4Chrome Android Πλήρης υποστήριξη ΝαιEdge Mobile Πλήρης υποστήριξη ΝαιFirefox Android Πλήρης υποστήριξη 21Opera Android Πλήρης υποστήριξη ΝαιSafari iOS Πλήρης υποστήριξη 6Samsung Internet Android Πλήρης υποστήριξη Ναιnodejs Πλήρης υποστήριξη Ναι

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

Σύνταξη μέθοδο parseInt

Η μέθοδος παίρνει δύο παραμέτρους, η δεύτερη από τις οποίες είναι προαιρετική. Το αποτέλεσμα της δουλειάς είναι πάντα ένας αριθμός. Εάν η πρώτη παράμετρος (συμβολοσειρά) δεν περιέχει χαρακτήρες συστήματος αριθμών στην αρχή, τότε το αποτέλεσμα θα είναι NaN.

Τα δεκαεξαδικά ψηφία περιλαμβάνουν τα γράμματα "a", "b", "c", "d", "e" και "f". Σημάδι οκταδικός αριθμόςείναι το πρώτο "0", και το δεκαεξαδικό ζεύγος είναι "0x". Αλλά ο μετασχηματισμός δεν θα εκτελείται πάντα σωστά, αν και υποδεικνύεται σωστά συντακτικά.

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

Σημείωση. Η συνάρτηση promt() εισάγει αυτό που πληκτρολόγησε ο επισκέπτης στο πεδίο εισαγωγής και όχι το "αποτέλεσμα" των κουμπιών Ok ή Cancel. Αυτός είναι ο λόγος για τον οποίο, για να λάβετε γρήγορες τιμές, μπορείτε να παρακολουθείτε το περιεχόμενο της εισόδου του επισκέπτη εν κινήσει και να αποδεχτείτε σωστή λύση.

Χρησιμοποιώντας τη μέθοδο parseInt

Ο προγραμματισμός στο Διαδίκτυο έχει τις δικές του ιδιαιτερότητες και έχει ισχυρή επιρροή στις ιδέες προγραμματισμού γενικά. Η συγχώνευση μικρών δεδομένων σε μια μεγάλη «λέξη» είναι μια παράμετρος της οποίας τα κύρια χαρακτηριστικά είναι:

  • συμπαγές;
  • γρήγορη αναγνώριση.

Σε πολλές περιπτώσεις, οι μεγαλύτεροι «θαυμαστές» αυτού του παράγοντα CSS και HTML άρχισαν να γράφουν έναν αριθμό και μετά αμέσως, χωρίς κενό, μονάδα μέτρησης ή σημείο στίξης. Με άλλα λόγια, συνθέστε αυστηρές συμβολικές ακολουθίες.

Τακτικές εκφράσεις γενικά, για όσους δεν είναι μυημένοι στα μυστήρια της ανάλυσης, είναι ο κώδικας Μορς, στον οποίο ένα χάος από τελείες και παύλες «μοιράζεται» σε όλους σχεδόν τους χαρακτήρες του παραδοσιακού συνόλου των οκτώ bit. Επιπλέον, όλα όσα δεν περιλαμβάνονται ορατό μέροςπίνακα συμβόλων, μπορείτε εύκολα να τον γράψετε με κωδικούς, δηλαδή αριθμούς και γράμματα - αυτή είναι η μέθοδος parseInt JavaScript.

Πολλές παράμετροι κάποιων Χαρακτηριστικά CSSμην επιτρέπετε κενά και λειτουργούν μόνο όταν είναι γραμμένα σε ένα ακριβές πρότυπο.

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

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

Αριθμητική ανάλυση νόημα

Η ανάλυση πληροφοριών είναι μια συμβολική διαδικασία, αλλά ο προγραμματισμός σήμερα εξακολουθεί να είναι η ίδια επεξεργασία αριθμητικών πληροφοριών όπως ήταν πριν από τρεις δεκαετίες. Στο παρελθόν δεν υπήρχε JavaScript & parseInt. Αλλά από την εμπειρία του παρελθόντος προέκυψε η γνώση για την επεξεργασία αριθμητικών πληροφοριών, η δυνατότητα κανονικές εκφράσειςκαι άλλες παρόμοιες ιδέες.

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

  • πώς να το κάνουμε;
  • τι να κάνω.

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

Η ανάπτυξη αντικειμένων χωρίς JavaScript parseInt είναι αδικαιολόγητη σπατάλη προσπάθειας, χρόνου και κώδικα. Οι μέθοδοι του αντικειμένου πρέπει να λειτουργούν σαν ρολόι, γρήγορα και με ακρίβεια. Αλλά το υποκείμενο για τη λειτουργία ενός αντικειμένου είναι η πληροφορία, το αποτέλεσμα της λειτουργίας ενός αντικειμένου είναι επίσης η πληροφορία. Και εδώ δεν είναι καθόλου απαραίτητο να κατανοήσουμε με αντικείμενο Έννοια JavaScript, PHP ή Python... είναι ιδιωτικές επιλογές και στυλ για την κωδικοποίηση πραγματικών αντικειμένων.

Τελευταία ενημέρωση: 1/11/2015

Συχνά υπάρχει ανάγκη μετατροπής ενός δεδομένων σε άλλο. Για παράδειγμα:

Var number1 = "46"; var number2 = "4"; var αποτέλεσμα = αριθμός 1 + αριθμός 2; console.log(result); //464

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

Σε αυτή την περίπτωση μπορούμε να χρησιμοποιήσουμε πράξεις μετατροπής. Για να μετατρέψετε μια συμβολοσειρά σε αριθμό, χρησιμοποιήστε τη συνάρτηση parseInt():

Var number1 = "46"; var number2 = "4"; var result = parseInt(number1) + parseInt(number2); console.log(result); // 50

Για να μετατρέψετε τις συμβολοσειρές σε κλασματικοί αριθμοίχρησιμοποιείται η συνάρτηση parseFloat():

Var number1 = "46.07"; var number2 = "4,98"; var result = parseFloat(number1) + parseFloat(number2); console.log(result); //51.05

Σε αυτήν την περίπτωση, η γραμμή μπορεί να έχει μικτό περιεχόμενο, για παράδειγμα, "123γεια", δηλαδή, σε αυτήν την περίπτωση υπάρχουν αριθμοί, αλλά υπάρχουν και κανονικοί χαρακτήρες. Αλλά η μέθοδος parseInt() θα προσπαθήσει να εκτελέσει τη μετατροπή:

Var num1 = "123 γεια"; var num2 = parseInt(num1); console.log(num2); // 123

Εάν η μέθοδος αποτύχει να μετατραπεί, επιστρέφει NaN (Όχι Αριθμός), που δείχνει ότι η συμβολοσειρά δεν αντιπροσωπεύει έναν αριθμό και δεν μπορεί να μετατραπεί.

Με τη χρήση ειδική λειτουργίαΤο isNaN() μπορεί να ελέγξει εάν μια συμβολοσειρά αντιπροσωπεύει έναν αριθμό. Εάν η συμβολοσειρά δεν είναι αριθμός, τότε η συνάρτηση επιστρέφει true, αν είναι αριθμός, τότε false:

Var num1 = "javascript"; var num2 = "22"; var αποτέλεσμα = isNaN(num1); console.log(result); // true - το num1 δεν είναι αριθμητικό αποτέλεσμα = isNaN(num2); console.log(result); // false - το num2 είναι ένας αριθμός

Παραπάνω εξετάσαμε τη μετατροπή συμβολοσειρών σε αριθμούς στο δεκαδικό σύστημα. Ωστόσο, μπορούμε να μετατρέψουμε αριθμούς σε οποιοδήποτε σύστημα. Από προεπιλογή, ο ίδιος ο διερμηνέας JavaScript μαντεύει σε ποιο σύστημα αριθμών θέλουμε να μετατρέψουμε τη συμβολοσειρά (συνήθως επιλέγεται το δεκαδικό σύστημα). Αλλά μπορούμε να χρησιμοποιήσουμε τη δεύτερη παράμετρο για να υποδείξουμε ρητά ότι θέλουμε να μετατρέψουμε τη συμβολοσειρά σε αριθμό σε ένα συγκεκριμένο σύστημα. Για παράδειγμα, μετατροπή σε αριθμό σε δυαδικό σύστημα:

Var num1 = "110"; var num2 = parseInt(num1, 2); console.log(num2); // 6

Το αποτέλεσμα είναι 6, αφού το 110 στο δυαδικό είναι το ίδιο με το 6 στο δεκαδικό.

Τώρα ας γράψουμε μικρό πρόγραμμα, στις οποίες χρησιμοποιούμε πράξεις με μεταβλητές:

JavaScript var strSum = prompt("Εισαγάγετε το ποσό κατάθεσης", 1000); var strPercent = prompt("Enter επιτόκιο", 10); var sum = parseInt(strSum); var ποσοστό = parseInt(strPercent); sum = άθροισμα + άθροισμα * ποσοστό / 100; alert("Μετά τον υπολογισμό των τόκων, το ποσό κατάθεσης θα είναι: " + sum);

Η συνάρτηση prompt() εμφανίζει ένα παράθυρο διαλόγου στο πρόγραμμα περιήγησης που σας ζητά να εισαγάγετε μια τιμή. Το δεύτερο όρισμα αυτής της συνάρτησης καθορίζει την τιμή που θα χρησιμοποιηθεί ως προεπιλογή.

Ωστόσο, η συνάρτηση prompt() επιστρέφει μια συμβολοσειρά. Επομένως, πρέπει να μετατρέψουμε αυτή τη συμβολοσειρά σε αριθμό για να εκτελέσουμε πράξεις σε αυτήν.

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

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

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

Σύνταξη parseInt( σειρά, ρίζα) Συμβολοσειρά παραμέτρων Η τιμή που θα ερμηνευτεί. Εάν η τιμή της παραμέτρου συμβολοσειράς δεν είναι τύπος συμβολοσειράς, μετατρέπεται σε μία (χρησιμοποιώντας την αφηρημένη λειτουργία ToString). Τα κενά στην αρχή μιας γραμμής δεν υπολογίζονται. radix Ένας ακέραιος αριθμός στην περιοχή μεταξύ 2 και 36 που αντιπροσωπεύει τη βάση του αριθμητικού συστήματος χορδέςπεριγράφεται παραπάνω. Οι περισσότεροι χρήστες χρησιμοποιούν το σύστημα δεκαδικών αριθμών και καθορίζουν το 10. Καθορίζετε πάντα αυτήν την παράμετρο για να εξαλείφετε τα σφάλματα ανάγνωσης και να διασφαλίζετε τη σωστή εκτέλεση και τα προβλέψιμα αποτελέσματα. Όταν η βάση του αριθμητικού συστήματος δεν έχει καθοριστεί, διαφορετικές υλοποιήσειςμπορεί να επιστρέψει διαφορετικά αποτελέσματα. Επιστρεφόμενη αξία

Ένας ακέραιος αριθμός που λαμβάνεται με ανάλυση (ανάλυση και ερμηνεία) της συμβολοσειράς που πέρασε. Εάν ο πρώτος χαρακτήρας δεν μπορούσε να μετατραπεί σε αριθμό, τότε επιστρέφεται το NaN.

Περιγραφή

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

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

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

Εάν η βάση είναι απροσδιόριστη ή 0 (ή δεν έχει καθοριστεί), τότε η JavaScript προϋποθέτει τα εξής από προεπιλογή:

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

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

Από μαθηματική άποψη, η τιμή NaN δεν είναι αριθμός σε κανένα σύστημα αριθμών. Για να προσδιορίσετε εάν το parseInt θα επιστρέψει NaN ως αποτέλεσμα, μπορείτε να καλέσετε τη συνάρτηση isNaN. Εάν εμπλέκεται το 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); θα επιστρέψει 15 parseInt(15.99, 10); parseInt("FXX123", 16); parseInt("1111", 2); parseInt("15*3", 10); parseInt("15e2", 10); parseInt("15px", 10); parseInt("12", 13);

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

ParseInt("Hello", 8); // Δεν είναι αριθμός parseInt("546", 2); // Λανθασμένος αριθμός στο δυαδικό σύστημα αριθμών

Τα ακόλουθα παραδείγματα επιστρέφουν όλα -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); // Πολύ μεγάλα νούμεραγίνει 4 parseInt (0.00000000000434, 10); // Οι πολύ μικροί αριθμοί γίνονται 4

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

ParseInt("0e0", 16);

Οκταδική ερμηνεία χωρίς να προσδιορίζεται το σύστημα αριθμών

Αν και αυτό αποθαρρύνεται στην προδιαγραφή ECMAScript 3 και απαγορεύεται στο ECMAScript 5, πολλές υλοποιήσεις ερμηνεύουν αριθμός γραμμής, ξεκινώντας από το 0, ως οκταδικό. Το παρακάτω παράδειγμα μπορεί να έχει είτε οκταδικό είτε δεκαδικό αποτέλεσμα. Για να αποφύγετε απροσδόκητα αποτελέσματα, να προσδιορίζετε πάντα την ρίζα.

ParseInt("0e0"); // 0 parseInt("08"); // 0, το "8" δεν είναι ψηφίο σε οκταδικό.

Το ECMAScript 5 καταργεί την οκταδική ερμηνεία

Η προδιαγραφή ECMAScript 5 δεν επιτρέπει πλέον στο parseInt να χειρίζεται συμβολοσειρές που ξεκινούν με 0 σε οκταδικό. Το ECMAScript 5 διακηρύσσει:

Η συνάρτηση parseInt παράγει μια ακέραια τιμή ερμηνεύοντας τα περιεχόμενα του ορίσματος συμβολοσειράς σύμφωνα με την καθορισμένη ρίζα. Το διάστημα στην αρχή μιας γραμμής αγνοείται. Εάν η ρίζα είναι απροσδιόριστη ή ίση με 0, θεωρείται ότι είναι 10, εκτός από την περίπτωση που η συμβολοσειρά αρχίζει με ζεύγη χαρακτήρων 0x ή 0X: τότε η βάση θεωρείται ότι είναι 16. Εάν η ρίζα ορίζεται ως 16, ο αριθμός μπορεί επίσης να ξεκινά με ζεύγη χαρακτήρων 0x ή 0X.

Εδώ το ECMAScript 5 αποκλίνει από την προδιαγραφή ECMAScript 3, το οποίο αποθάρρυνε αλλά δεν απαγόρευε την οκταδική ερμηνεία.

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

Πιο αυστηρή ερμηνευτική λειτουργία

Μερικές φορές χρειάζεται ένας πιο αυστηρός τρόπος ερμηνείας ακεραίων τιμών. Οι κανονικές εκφράσεις μπορούν να βοηθήσουν σε αυτό:

Var filterInt = συνάρτηση (τιμή) (if (/^(\-|\+)?(+|Infinity)$/.test(value)) return Number(value); return NaN; ) console.log(filterInt (" 421")); // 421 console.log(filterInt("-421")); // -421 console.log(filterInt("+421")); // 421 console.log(filterInt("Infinity")); // Infinity console.log(filterInt("421e+0")); // NaN console.log(filterInt("421hop")); // NaN console.log(filterInt("hop1.61803398875")); // NaN console.log(filterInt("1.61803398875")); // NaN

Προσδιορισμός Σχόλιο κατάστασης προδιαγραφών
ECMAScript 1st Edition (ECMA-262) Πρότυπο Αρχικός ορισμός.
ECMAScript 5.1 (ECMA-262)
Πρότυπο
ECMAScript 2015 (6η Έκδοση, ECMA-262)
Ο ορισμός του "parseInt" βρίσκεται σε αυτήν την προδιαγραφή.
Πρότυπο
Τελευταίο προσχέδιο ECMAScript (ECMA-262)
Ο ορισμός του "parseInt" βρίσκεται σε αυτήν την προδιαγραφή.
Προσχέδιο
Υποστήριξη προγράμματος περιήγησης

Ο πίνακας συμβατότητας σε αυτήν τη σελίδα δημιουργείται από δομημένα δεδομένα. Εάν θέλετε να συνεισφέρετε στα δεδομένα, ανατρέξτε στη διεύθυνση https://github.com/mdn/browser-compat-data και στείλτε μας ένα αίτημα έλξης.

Ενημερώστε τα δεδομένα συμβατότητας στο GitHub

Διακομιστής φορητών υπολογιστών Chrome Edge Firefox Internet Explorer Opera Safari Android Προβολή ιστού Chrome για Android Edge Mobile Firefox για Android Opera για Android Safari σε iOS Samsung Internet Node.jsΒασική υποστήριξη Οι αναλύσεις των συμβολοσειρών αρχικών-μηδενικών είναι δεκαδικές, όχι οκταδικές
Χρώμιο Πλήρης υποστήριξηΝαίEdge Πλήρης υποστήριξη ΝαιΠλήρης υποστήριξη Firefox 1IE Πλήρης υποστήριξη ΝαιOpera Πλήρης υποστήριξη ΝαιSafari Πλήρης υποστήριξη ΝαιWebView Android Πλήρης υποστήριξη ΝαιChrome Android Πλήρης υποστήριξη ΝαιEdge Mobile Πλήρης υποστήριξη ΝαιΥποστήριξη Firefox Android Full 4Opera Android Πλήρης υποστήριξη ΝαιSafari iOS Πλήρης υποστήριξη ΝαιSamsung Internet Android Πλήρης υποστήριξη Ναιnodejs Πλήρης υποστήριξη Ναι
Πλήρης υποστήριξη Chrome 23Edge Πλήρης υποστήριξη ΝαιΠλήρης υποστήριξη Firefox 21IE Πλήρης υποστήριξη 9Opera Πλήρης υποστήριξη ΝαιΠλήρης υποστήριξη Safari 6Υποστήριξη WebView Android Full 4.4Chrome Android Πλήρης υποστήριξη ΝαιEdge Mobile Πλήρης υποστήριξη ΝαιFirefox Android Πλήρης υποστήριξη 21Opera Android Πλήρης υποστήριξη ΝαιSafari iOS Πλήρης υποστήριξη 6Samsung Internet Android Πλήρης υποστήριξη Ναιnodejs Πλήρης υποστήριξη Ναι

Η συνάρτηση ParseInt έχει σχεδιαστεί για να μετατρέπει μια συμβολοσειρά σε αριθμό στο JavaScript. Η μέθοδος παίρνει μια τιμή συμβολοσειράς ως όρισμα και τη μετατρέπει σε αριθμό χωρίς δεκαδικά ψηφία ή εναλλακτικά παράγει μια τιμή NaN. Το ParseInt παίρνει δύο ορίσματα. Η δεύτερη παράμετρος καθορίζει το σύστημα αριθμών που θα χρησιμοποιηθεί κατά τη μετατροπή μιας τιμής συμβολοσειράς σε αριθμό.

Ένα απλό παράδειγμα που χρησιμοποιεί δεκαδικό συμβολισμό μοιάζει με αυτό:

var x = "1"; console.log(x, typeof x); //1 γραμμή x = parseInt(x, 10); console.log(x, typeof x); //1 αριθμός Παράδειγμα ηλεκτρονικού κώδικα

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

Πριν μετατρέψετε μια συμβολοσειρά σε αριθμό στο JavaScript, ας δούμε ένα παράδειγμα μετατροπής δυάδικος αριθμόςσε έναν ακέραιο στο δεκαδικό σύστημα:

var x = 10; x = parseInt(x, 2); console.log(x); //2 Παράδειγμα ηλεκτρονικού κώδικα

Η μεταβλητή x παίρνει την τιμή 10. Στο δυαδικό, η τιμή 10 (δηλαδή, "ένα, μηδέν") ισοδυναμεί με 2 σε δεκαδικό. Περάσαμε το ParseInt 10 στη συνάρτηση και προσδιορίσαμε το δυαδικό σύστημα ως αριθμητικό σύστημα. Η συνάρτηση επέστρεψε την τιμή 2, η οποία είναι το ακέραιο ισοδύναμο του "one, zero".

Τι συμβαίνει αν περάσουμε έναν δεκαδικό αριθμό με ένα ή περισσότερα δεκαδικά ψηφία στη συνάρτηση ParseInt; Ας ρίξουμε μια ματιά:

var x = 3,14; x = parseInt(x, 10); console.log(x); //3 Παράδειγμα ηλεκτρονικού κώδικα

Η συνάρτηση ParseInt έγινε αποδεκτή αριθμητική αξίαμε δεκαδικά ψηφία και το έφερε σε ακέραιο αριθμό. Τι γίνεται όμως αν χρειαστεί να μετατρέψετε μια συμβολοσειρά σε αριθμό στο JavaScript; Εδώ είναι ένα παράδειγμα:

var x = "Hola World!"; x = parseInt(x, 10); console.log(x); //NaN ...ή Όχι ένας αριθμός Online παράδειγμα κώδικα

Εάν στο ParseInt διαβιβαστεί ένα όρισμα που δεν μπορεί εύκολα να μετατραπεί σε αριθμητική τιμή, τότε η τιμή επιστροφής θα είναι NaN (ή όχι αριθμός). Εάν μια συνάρτηση μεταβιβαστεί ένας συνδυασμός αριθμητικών και αλφαβητικών τιμών συμβολοσειράς, θα μετατρέψει τους αριθμητικούς χαρακτήρες σε ακέραιους και θα απορρίψει τους υπόλοιπους:

var x = "123UnoDosTres";

Εξερευνήστε μαθήματα JavaScript

x = parseInt(x, 10); console.log(x); //123 Παράδειγμα ηλεκτρονικού κώδικα

Αυτές είναι οι βασικές αρχές χρήσης της συνάρτησης ParseInt. Θα πρέπει να θυμόμαστε ότι ο κύριος σκοπός του ParseInt είναι η μετάφραση JavaScript μιας συμβολοσειράς σε αριθμό (χωρίς δεκαδικά ψηφία). Μπορείτε επίσης να καθορίσετε το σύστημα αριθμών που θα χρησιμοποιήσετε. Εάν μια συνάρτηση περάσει μια τιμή που δεν μπορεί να μετατραπεί σε αριθμό, τότε το ParseInt επιστρέφει NaN.

Περισσότερες πληροφορίες σχετικά με τη συνάρτηση ParseInt JavaScript μπορείτε να βρείτε εδώ.

Η μετάφραση του άρθρου “Using the JavaScript ParseInt Method” ετοιμάστηκε από τη φιλική ομάδα του έργου.

Καλό κακό



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: