JavaScript ist eine magische Sprache. Es gibt 5 Möglichkeiten, Zeichenfolgen in Zahlen umzuwandeln, jede mit ihren eigenen Fallstricken!
In diesem Artikel werden 5 Methoden zum Konvertieren von JavaScript-Zeichenfolgen in Zahlen und ihre Fallstricke vorgestellt. Ich hoffe, dass er für alle hilfreich ist.
Es gibt viele Möglichkeiten, einen String in eine Zahl umzuwandeln, mir fallen 5 ein!
parseInt(num); // 默认方式 (没有基数) parseInt(num, 10); // 传入基数 (十位数) parseFloat(num); // 浮点数 Number(num); // Number 构造器 ~~num; //按位非 num / 1; // 除一个数 num * 1; // 乘一个数 num -0 // 减去0 + num; // 一元运算符 "+"
Welches solltest du wählen? Wann sollte man es wählen? Warum so etwas wählen? Wir gehen sie einzeln durch und schlüsseln die gemeinsamen Fallstricke jedes Ansatzes auf.
Laut den Benchmarks von JsPerf.com reagieren die meisten Browser am besten auf parseInt. Obwohl dies der schnellste Weg ist, stößt man bei der Verwendung von preseInt auf einige häufige Fallstricke:
parseInt("08"); // returns 0 部分老浏览器. parseInt("44.jpg"); // returns 44
parseInt
: Wenn keine Basis übergeben wird, ist die übergebene Basis standardmäßig 10 parseInt(num, 10)
, wenn Sie dies nicht tun t Kennen Sie den Typ des Num-Attributs und verwenden Sie parseInt nicht, um Zeichenfolgen in Zahlen umzuwandeln.
parseFloat
Dies ist eine großartige Option, wenn Sie keine Hexadezimalzahlen analysieren. Beispiel:
parseInt(-0xff); // returns -255 parseInt("-0xFF"); // returns -255 parseFloat(-0xff); // returns -255 parseFloat("-0xFF"); // returns 0
Hinweis: Negative Hexadezimalziffern in Zeichenfolgen sind ein Sonderfall, und wenn Sie mit parseFloat analysieren, ist das Ergebnis falsch. Um NaN-Situationen in Ihrem Programm zu vermeiden, sollten Sie den konvertierten Wert überprüfen.
parseFloat("44.jpg"); // return 44
parseFloat
: Seien Sie vorsichtig beim Konvertieren von Hexadezimalzahlen. Verwenden Sie parseFloat nicht, wenn Sie den Objekttyp, den Sie konvertieren möchten, nicht kennen.
Bitweise Notation
kann eine Zeichenfolge in eine Ganzzahl umwandeln, es handelt sich jedoch nicht um eine Gleitkommazahl. Wenn es sich um eine String-Konvertierung handelt, wird 0 zurückgegeben;
~~1.23; // returns 1 ~~"1.23"; // returns 1 ~~"23"; // returns 23 ~~"Hello world"; // returns 0
Was ist das Prinzip? Durch Umdrehen jedes Bits wird auch das A1-Komplement der Zahl genannt. Sie können es verwenden, beachten Sie jedoch, dass es nur zum Speichern von Ganzzahlen verwendet werden kann. Verwenden Sie es daher im Allgemeinen nicht, es sei denn, Sie sind sicher, dass die Zahl zwischen 32-Bit-Ganzzahlen liegt (aufgrund der Spezifikation des Aufrufs von ToInt32).
按位非
: Verwenden Sie dies, um sicherzustellen, dass die Eingabe keine Zeichen enthält, nur für Ganzzahlen.
Nummer
Nummer hat das gleiche Problem wie die oben erwähnte Konvertierungsmethode. Beim Parsen wird versucht, die Nummer herauszufinden, die Sie ihr gegeben haben :
Number("023"); // returns 23 Number(023); // returns 19
Hinweis: 023 ist eigentlich eine Oktalzahl, und egal wie Sie es machen, es gibt 19 zurück; das Gleiche gilt für Hexadezimalzahlen ohne einfache oder doppelte Anführungszeichen.
Number ist auch einer der langsamsten in JsPerf.
Number
: Benutze es kaum.
Unärer Cloud-Operator
"1.23" * 1; // returns 1.23 "0xFF" - 0; // returns 255 "0xFF.jpg" / 1 + // returns NaN "023"; // returns 23
Der unäre Operator unterscheidet sich von anderen Parsing-Methoden. Wenn es sich um einen NaN-Wert handelt, ist der zurückgegebene Wert NaN . Dies ist meine Lieblingsmethode zum Konvertieren numerischer Werte, da ich nicht denke, dass ein Objekt mit Zeichen basierend auf der Anzahl seiner Bits als 0 oder „erraten“ werden sollte. Ich verwende grundsätzlich den Operator +
, weil er weniger verwirrend ist. Obwohl die Verwendung von -0
ebenfalls gut ist, drückt sie die ursprüngliche Absicht der Konvertierung in Zahlen nicht sehr gut aus.
Der beste Weg, eine Zeichenfolge in eine Zahl umzuwandeln?
Beim Konvertieren einer negativen Hexadezimalzeichenfolge in eine Zahl. Alles, was zuerst in einen String konvertiert werden sollte (z. B. über + ""
) und dann mit dem unären Operator oder parseInt mit Radix in eine Zahl geparst wird. Wenn das Ergebnis jedoch kein NaN-Wert ist, ist es sinnvoller, parseFloat zu verwenden.
Empfohlenes Tutorial: „JS-Tutorial“
Das obige ist der detaillierte Inhalt vonTeilen Sie 5 Möglichkeiten, JS-Strings in Zahlen umzuwandeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!