Sobes.tech
Junior

Πώς γίνεται η μετατροπή μιας συμβολοσειράς σε αριθμό στη JavaScript;

sobes.tech AI

Απάντηση από AI

Ο μετασχηματισμός μιας συμβολοσειράς σε αριθμό στη JavaScript μπορεί να γίνει με διάφορους τρόπους:

  • Αναπόφευκτος μετασχηματισμός τύπου:

    • Χειριστές μαθηματικών: Για παράδειγμα, ο μοναδικός συν (+) ή η αφαίρεση (-).
    // Αναπόφευκτος μετασχηματισμός με τον μοναδικό συν
    let str = "123";
    let num = +str; // num = 123 (αριθμός)
    
    • Μαθηματικές λειτουργίες: Όταν χρησιμοποιούνται μαθηματικοί τελεστές, η JavaScript θα προσπαθήσει να μετατρέψει τους τελεστές σε αριθμούς.
    // Αναπόφευκτος μετασχηματισμός με αφαίρεση
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (αριθμός)
    
  • Επίσημος μετασχηματισμός τύπου:

    • parseInt(string, radix): Μετατρέπει μια συμβολοσειρά σε ακέραιο αριθμό. Το δεύτερο όρισμα radix (βάση συστήματος) συνιστάται να ορίζεται για αποφυγή απρόβλεπης συμπεριφοράς.
    // Μετατροπή με parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (ακέραιος)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (ακέραιος)
    
    • parseFloat(string): Μετατρέπει μια συμβολοσειρά σε δεκαδικό αριθμό. Αναλύει τη συμβολοσειρά μέχρι το πρώτο μη αριθμητικό χαρακτήρα ή τελεία.
    // Μετατροπή με parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (δεκαδικός αριθμός)
    
    • Number(value): Μετατρέπει οποιαδήποτε τιμή σε αριθμό. Είναι πιο αυστηρό από το parseInt και το parseFloat. Αν η συμβολοσειρά δεν μπορεί να μετατραπεί πλήρως σε αριθμό, επιστρέφει NaN.
    // Μετατροπή με Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (αριθμός)
    
    let strInvalid = "hello";
    let numInvalid = Number(strInvalid); // numInvalid = NaN
    

Διαφορές και χαρακτηριστικά:

Μέθοδος Περιγραφή Επιστρέφει σε μη έγκυρη συμβολοσειρά Αρχίζει να αναλύει μέχρι το πρώτο μη αριθμητικό
+string Αναπόφευκτος μετασχηματισμός με τον μοναδικό συν. NaN Όχι (ολόκληρη η συμβολοσειρά)
string - 0 Αναπόφευκτος μετασχηματισμός με αφαίρεση. NaN Όχι (ολόκληρη η συμβολοσειρά)
parseInt() Αναλύει σε ακέραιο. NaN Ναι
parseFloat() Αναλύει σε δεκαδικό. NaN Ναι
Number() Επίσημος μετασχηματισμός. Πιο αυστηρός. NaN Όχι (ολόκληρη η συμβολοσειρά)

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