Τελευταία ενημέρωση: 1.11.2015

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

varnumber1 = "46"; varnumber2 = "4"; varresult = αριθμός 1 + αριθμός 2; αρχείο καταγραφής κονσόλας (αποτέλεσμα); //464

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

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

varnumber1 = "46"; varnumber2 = "4"; var result = parseInt(number1) + parseInt(number2); αρχείο καταγραφής κονσόλας (αποτέλεσμα); // πενήντα

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

varnumber1 = "46.07"; varnumber2 = "4,98"; var result = parseFloat(number1) + parseFloat(number2); αρχείο καταγραφής κονσόλας (αποτέλεσμα); //51.05

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

Varnum1 = "123 γεια"; varnum2 = parseInt(num1); αρχείο καταγραφής κονσόλας(αριθμός2); // 123

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

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

Var num1 = "javascript"; varnum2 = "22"; varresult = isNaN(num1); αρχείο καταγραφής κονσόλας (αποτέλεσμα); // true - το num1 δεν είναι αριθμητικό αποτέλεσμα = isNaN(num2); αρχείο καταγραφής κονσόλας (αποτέλεσμα); // false - το num2 είναι ένας αριθμός

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

Varnum1 = "110"; varnum2 = parseInt(num1, 2); αρχείο καταγραφής κονσόλας(αριθμός2); // 6

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

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

JavaScript

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

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

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

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

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

console.log(sum(1, 2)); // 3 (όλα είναι εντάξει εδώ) console.log(sum(1, "2")); // 12 (και όχι τόσο εδώ)

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

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

τύπος χειριστή

Αυτός ο μοναδικός τελεστής παίρνει απολύτως οποιαδήποτε τιμή ως τελεστή και επιστρέφει τον τύπο του σε μια μεταβλητή συμβολοσειράς.

Η JavaScript έχει τους ακόλουθους τύπους δεδομένων:

// 1.) κονσόλα αντικειμένου.log (typeof ( ) ) ; // αντικείμενο var p = ( x: 1 , y: 3 ); κονσόλα καταγραφής (τύπος p) ; // αντικείμενο // 2.) συνάρτηση συνάρτησης sayHello() ( console.log ("Hello!") ; ) console.log (τύπος sayHello) ; // function // 3.) string console.log (τύπος "JavaScript" ) ; // string // 4.) number console.log (typeof 3.1415 ) ; // αριθμός // 5.) boolean console.log (typeof true) ; // boolean // 6.) undefined var notExistsOne; console.log (τύπος notExistsOne) ; // undefined console.log (typeof notExistsTwo) ; // απροσδιόριστο

// 1.) αντικείμενο console.log(typeof()); // αντικείμενο var p = (x: 1, y: 3); console.log(typeofp); // αντικείμενο // 2.) συνάρτηση συνάρτησης sayHello() ( console.log("Hello!"); ) console.log(typeof sayHello); // function // 3.) string console.log(typeof "JavaScript"); // string // 4.) number console.log(typeof 3.1415); // αριθμός // 5.) boolean console.log(typeof true); // boolean // 6.) undefined var notExistsOne; console.log(typeof notExistsOne); // undefined console.log(typeof notExistsTwo); // απροσδιόριστο

σημειώστε ότι απροσδιόριστοςείναι επίσης ένας τύπος δεδομένων που αποτελείται από μία μόνο τιμή.

Εκμαγείο

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

Μετατροπή συμβολοσειράς σε αριθμό

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

var c = "not-a-number"; ++c; console.log(typeof c); // NaN

Αξίζει να σημειωθεί ότι δεν χρειάζεται να καταφύγετε σε αυτήν τη μέθοδο μετατροπής μιας συμβολοσειράς σε αριθμό λόγω της κακής αναγνωσιμότητας και της μη προφανούς της. Υπάρχουν ενσωματωμένες λειτουργίες στο js για αυτήν την εργασία. parseIntκαι parseFloat. Λαμβάνουν ως πρώτο όρισμα μια συμβολοσειρά που πρέπει να μετατραπεί σε αριθμό και ως προαιρετικό δεύτερο όρισμα, παίρνουν τη βάση του συστήματος αριθμών που περιέχει τον αριθμό στη συμβολοσειρά που διαβιβάστηκε ως πρώτο όρισμα. Εάν το δεύτερο όρισμα δεν έχει καθοριστεί, τότε θα θεωρηθεί ότι η συμβολοσειρά περιέχει έναν αριθμό στο σύστημα δεκαδικών αριθμών.

Λειτουργία parseIntχρησιμοποιείται για τη μετατροπή μιας συμβολοσειράς σε ακέραιο και τη συνάρτηση parseFloatγια μετατροπή σε κλασματικό.

var a = parseInt("10"); κονσόλα log ([ "a = " , a, "; typeof a:" , typeof a] .join (" " ) ); // a = 10 ; typeof a: αριθμός var pi = parseInt("3.1415" ); console.log("pi = " + pi) ; // pi = 3 pi = parseFloat("3.1415" ); console.log("pi = " + pi) ; // pi = 3,1415

var a = parseInt("10"); console.log(["a = ", a, "; typeof a:", typeof a].join(" ")); // a = 10 ; typeof a: αριθμός var pi = parseInt("3.1415"); console.log("pi = " + pi); // pi = 3 pi = parseFloat("3.1415"); console.log("pi = " + pi); // pi = 3,1415

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

a = parseInt("010"); console.log("a = " + a) ; // a = 8 a = parseInt("0xAA" ); console.log("a = " + a) ; // a = 170 a = parseFloat("1e-10" ); console.log("a = " + a) ; // a = 1e-10 (1e-10 = 1 * 10^-10 = 0,0000000001)

a = parseInt("010"); console.log("a = " + a); // a = 8 a = parseInt("0xAA"); console.log("a = " + a); // a = 170 a = parseFloat("1e-10"); console.log("a = " + a); // a = 1e-10 (1e-10 = 1 * 10^-10 = 0,0000000001)

Ως δεύτερη παράμετρος των συναρτήσεων parseIntκαι parseFloatμπορείτε να καθορίσετε τη βάση του συστήματος αριθμών.

a = parseInt("10" , 8 ); console.log("a = " + a) ; // a = 8 a = parseInt("010" , 10); console.log("a = " + a) ; // a = 10 a = parseInt("ff" , 16 ); console.log("a = " + a) ; // a = 255

a = parseInt("10", 8); console.log("a = " + a); // a = 8 a = parseInt("010", 10); console.log("a = " + a); // a = 10 a = parseInt("ff", 16); console.log("a = " + a); // a = 255

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

a = parseInt("όχι αριθμός"); console.log("a = " + a) ; // a = NaN a = parseFloat("όχι αριθμός" ); console.log("a = " + a) ; // a = NaN

a = parseInt("όχι αριθμός"); console.log("a = " + a); // a = NaN a = parseFloat("όχι αριθμός"); console.log("a = " + a); // a = NaN

Μετατροπή συμβολοσειράς

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

var str = "Αντικείμενο: " + ( ) ; αρχείο καταγραφής κονσόλας (str) ; // Αντικείμενο: str = "Πίνακας: " + [ 1 , 2 , 3 ] ; αρχείο καταγραφής κονσόλας (str) ; // Πίνακας: 1,2,3 συνάρτηση sum(a, b) ( return a + b; ) str = "Function: " + sum; αρχείο καταγραφής κονσόλας (str) ; /* Συνάρτηση: συνάρτηση άθροισμα(a, b) (επιστρέφει a + b; ) */

var str = "Αντικείμενο: " + (); αρχείο καταγραφής κονσόλας(str); // Αντικείμενο: str = "Πίνακας: " + ; αρχείο καταγραφής κονσόλας(str); // Πίνακας: 1,2,3 συνάρτηση sum(a, b) ( return a + b; ) str = "Function: " + sum; αρχείο καταγραφής κονσόλας(str); /* Συνάρτηση: συνάρτηση άθροισμα(a, b) (επιστρέφει a + b; ) */

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

var p = ( x: 2 , y: 4 ) , str; str = p.toString(); κονσόλα log (typeof str) ; // string console.log (str) ; // str = [1, 2, 3] .toString (); κονσόλα log (typeof str) ; // string console.log (str) ; // 1,2,3

var p = (x: 2, y: 4), str; str = p.toString(); console.log(typeofstr); // string console.log(str); // str = .toString(); console.log(typeofstr); // string console.log(str); // 1,2,3

Αριθμητική μετατροπή

Η μετατροπή σε αριθμό πραγματοποιείται κατά την εκτέλεση μαθηματικές πράξειςκαι κατά την εκτέλεση μιας πράξης σύγκρισης με τύπο casting (==, !=), ενώ η τιμή ψευδήςκαι ένας κενός πίνακας μετατρέπονται σε τιμή τύπου 0 αριθμός.

var a = true + true + true; // 1 + 1 + 1 console.log(a); // 3

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

var arr = [1, 2, 3]; console.log (arr + 4 ) ; // 1,2,34 συνάρτηση sum(a, b) ( return a + b; ) console.log (sum + 5 ) ; // συνάρτηση sum(a, b)(επιστρέφει a + b;)5

var arr = ; console.log(arr + 4); // 1,2,34 συνάρτηση sum(a, b)(return a + b;) console.log(sum + 5); // συνάρτηση sum(a, b)(επιστρέφει a + b;)5

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

Αυτό είναι όλο. Όπως πάντα, καλή επιτυχία σε εσάς!

Υπάρχουν δύο κύριοι τρόποι μετατροπής συμβολοσειράς σε αριθμό στο javascript. Ένας τρόπος είναι να το αναλύσετε και ένας άλλος τρόπος είναι να αλλάξετε τον τύπο του σε αριθμό. Όλα τα κόλπα σε άλλες απαντήσεις (π.χ. unary plus) υποδηλώνουν σιωπηρό εξαναγκασμό του τύπου συμβολοσειράς στον αριθμό. Μπορείτε επίσης να κάνετε το ίδιο με τη συνάρτηση Αριθμός.

Συντακτικός

Var parsed = parseInt("97", 10);

Το ParseInt και το parseFloat είναι δύο συναρτήσεις που χρησιμοποιούνται για την ανάλυση συμβολοσειρών σε αριθμούς. Η ανάλυση θα σταματήσει αθόρυβα εάν χτυπήσει έναν χαρακτήρα που δεν αναγνωρίζει, κάτι που μπορεί να είναι χρήσιμο για την ανάλυση συμβολοσειρών όπως "92px", αλλά είναι επίσης κάπως επικίνδυνο καθώς δεν θα σας δώσει κανένα σφάλμα σε κακή εισαγωγή, αντίθετα "επιστρέφετε NaN αν η συμβολοσειρά δεν ξεκινά με αριθμό. Το κενό στην αρχή της συμβολοσειράς αγνοείται. Ακολουθεί ένα παράδειγμα κάτι που κάνει κάτι άλλο που θέλετε και δεν δίνει καμία ένδειξη ότι τα πράγματα πήγαν στραβά:

Var widgetsSold = parseInt("97,800", 10); // widgetsSold είναι τώρα 97

Είναι καλή πρακτική να προσδιορίζετε πάντα το δεκαδικό ως δεύτερο όρισμα. Σε παλαιότερα προγράμματα περιήγησης, εάν μια συμβολοσειρά ξεκινούσε από το 0, θα ερμηνευόταν ως οκταδική, εκτός αν είχε καθοριστεί μια τιμή βάσης, η οποία εξέπληξε πολλούς ανθρώπους. Η συμπεριφορά για το hex start ενεργοποιείται εάν η συμβολοσειρά ξεκινά με 0x, εκτός εάν έχει καθοριστεί μια τιμή βάσης. 0xff. Το πρότυπο άλλαξε στην πραγματικότητα με το ecmascript 5 έτσι σύγχρονα προγράμματα περιήγησηςδεν εκτελούνται πλέον οκταδικά όταν υπάρχει ένα 0, εάν δεν προσδιορίζεται λόγος. Το parseInt κατανοεί ρίζες μέχρι τη βάση 36, οπότε και τα κεφαλαία και τα πεζά γράμματα αντιμετωπίζονται ως ισοδύναμα.

Αλλάξτε τον τύπο συμβολοσειράς σε αριθμό

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

Var cast = Αριθμός ("97");

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

Προφανώς η μετατροπή σε αριθμό δίνει μια τιμή που μπορεί να είναι float και όχι ακέραιος, οπότε αν θέλετε έναν ακέραιο θα πρέπει να τον αλλάξετε. Υπάρχουν διάφοροι τρόποι για να γίνει αυτό:

Varrounded = Math.floor(Number("97.654")); // άλλες επιλογές είναι Math.ceil, Math.round var fixed = Number("97.654").toFixed(0); // στρογγυλεμένο αντί για περικομμένο var bitwised = Number("97.654")|0; // δεν χρησιμοποιείται για μεγάλους αριθμούς

Οποιοσδήποτε τελεστής bitwise (εδώ έκανα ένα bitwise ή, αλλά μπορείτε επίσης να κάνετε μια διπλή άρνηση όπως στην προηγούμενη απάντηση ή Bitshift) θα μετατρέψει την τιμή σε έναν ακέραιο 32-bit και οι περισσότεροι θα μετατρέψουν σε έναν υπογεγραμμένο ακέραιο. Σημειώστε ότι αυτό δεν θα θέλετε να κάνετε αναζήτηση για μεγάλους ακέραιους αριθμούς. Εάν ένας ακέραιος δεν μπορεί να αναπαρασταθεί σε 32 bit, θα ολοκληρωθεί.

~~"3000000000.654" === -1294967296 // Αυτό είναι το ίδιο με το Number("3000000000.654")|0 "3000000000.654" >>> 0 === 300000000000 0 === 30000000000. >> 0 === 3647256576 // αλλά εξακολουθεί να αποτυγχάνει με μεγαλύτερους αριθμούς

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

Math.floor("3000000000.654") === 3000000000 // Είναι το ίδιο με το Math.floor(Number("3000000000.654"))

Λάβετε υπόψη ότι όλες αυτές οι μέθοδοι κατανοούν τον εκθετικό συμβολισμό, επομένως το 2e2 είναι 200, όχι NaN. Επίσης, το Number κατανοεί το "Infinity" ενώ οι μέθοδοι ανάλυσης όχι.

Εθιμο

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

Ελέγχετε πάντα ότι ο αριθμός εξόδου ή μία από τις μεθόδους ανάλυσης είναι το είδος του αναμενόμενου αριθμού. Σχεδόν σίγουρα θα θέλετε να χρησιμοποιήσετε το isNaN για να βεβαιωθείτε ότι ο αριθμός δεν είναι NaN (συνήθως ο μόνος τρόπος για να μάθετε αν η ανάλυση απέτυχε).

Δεν έχει σημασία ποιος τύπος μεταβλητής χρησιμοποιείται στην έκφραση. Εάν η παράσταση είναι μαθηματική, όλες οι μεταβλητές της θα ερμηνευθούν αυτόματα ως αριθμητικές. Εάν υποβάλλονται σε επεξεργασία συμβολοσειρές, τότε όλοι οι "συμμετέχοντες" της έκφρασης αντιμετωπίζονται ως συμβολοσειρές. Ωστόσο, το έργο της μετατροπής JavaScript "string σε αριθμό" υπάρχει σε ένα πολύ ευρύτερο πλαίσιο.

Μέθοδοι JavaScript για τη μετατροπή συμβολοσειρών σε αριθμούς

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

Θα σας ενδιαφέρει:

Το παράδειγμα περιγράφει τέσσερις διαφορετικές χορδές. Στο πρώτο μπλοκ εξόδου, ο τύπος του καθενός μεταβλητή συνάρτησηΤο typeof ορίζεται ως συμβολοσειρά. Κάθε συμβολοσειρά μετατρέπεται πολύ απλά σε αριθμό. Στο δεύτερο μπλοκ εξόδου, μπορείτε να δείτε τις αλλαγές στις μεταβλητές μετά τη μετατροπή, ο τύπος τους έχει γίνει αριθμός. Το παράδειγμα μετατροπής JavaScript parseFloat είναι ιδιαίτερα αποκαλυπτικό: ήταν "12e+3", τώρα είναι "12000".

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

Η αντίστροφη μετατροπή μιας συμβολοσειράς που «γίνεται» αριθμός δεν είναι πάντα η ίδια συμβολοσειρά. Αυτή η στιγμή μπορεί να χρησιμοποιηθεί για τον έλεγχο της ορθότητας της εισαγωγής αριθμητικών πληροφοριών.