Konvertiert einen string in einen integer in JavaScript?
Wie konvertiere ich einen string in einen integer in JavaScript?
Mit
try { Number(str) } catch (e) { }
für die sichere Konvertierung von string in eine Zahl, wenn es eine Zahl ist und nicht, wenn es nicht ist. Anzahl Shops 16 Ziffern und einen Zeitraum an, unabhängig davon, wo die 16-stellig sind. Die meisten signifikanten stellen aufbewahrt werden, und der rest wird gerundet. Dann können Sie konvertieren, Runde, etc. Anzahl(str) zu welcher Nummer format, die Sie bitte.InformationsquelleAutor | 2009-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg wäre, um die native
Number
Funktion:Wenn das nicht für Sie arbeiten, dann gibt es die parseInt, unäre plus, parseFloat mit Boden, und Math.Runde Methoden.
parseInt:
unäre plus
wenn Ihr string ist bereits in form einer ganzen Zahl:
wenn Ihr string ist oder sein könnte, ein schweben und Sie wollen einen integer:
oder, wenn du gehst, werden mithilfe von Math.Boden mehrmals:
Wenn du bist der Typ, der vergisst zu setzen, die radix ist in, wenn Sie anrufen, parseInt verwenden, können Sie parseFloat und Runden Sie es wie Sie wollen. Hier verwende ich Boden.
Interessant, Math.Runde (wie Mathematik.Etage) einen string zu Zahl-Konvertierung, so dass, wenn Sie wollen, dass die gerundete Zahl (oder, wenn Sie eine ganze Zahl im string), dies ist eine großartige Möglichkeit, vielleicht mein Favorit:
valueOf
? Für strings gibt es die Zeichenfolge selbst.Wie wärs mit "1000" * 1?
Sie können auch verwenden:
Number("1000")
für diese Art der KonvertierungSie vergaß zu erwähnen
~~
.~~"1" === 1
,~~1.6 === 1
~~-1.6 === -1
,~~undefined === 0
(also NaN und Infinity und alles, was nicht konvertiert werden kann in ein integer)Warum nicht einfach mit
Number("1000")
??InformationsquelleAutor Nosredna
Versuchen parseInt-Funktion:
Aber es gibt ein problem. Wenn Sie versuchen, zu konvertieren "010" mit parseInt-Funktion, erkennt es als Oktalzahl, und wird wieder die Nummer 8. Also, Sie müssen geben Sie eine Basis (2 bis 36). In diesem Fall zur Basis 10.
Beispiel:
Beachten Sie, dass
parseInt
ignoriert fehlerhafte Daten nach der Analyse nichts gilt.Diese guid wird geparst 51:
Es ist vielleicht nicht für die neuesten Browser, sondern radix ist noch immer erforderlich für die Abwärtskompatibilität.
was ist mit "oder " 02" oder "02+1" , oder "03,12" oder "03.12"?
Beachten Sie, dass dies ignoriert, falsche Daten, nachdem die Anzahl. Zum Beispiel
parseInt('0asdf', 10)
produziert0
.InformationsquelleAutor Zanoni
Gibt es zwei Möglichkeiten, um zu konvertieren eine Zeichenfolge in eine Zahl, die in javascript. Eine Möglichkeit ist es, zu analysieren, und der andere Weg ist, um ändern Sie den Typ auf eine Zahl. All die tricks, die in den anderen Antworten (z.B. unäre plus) beinhalten implizit die Nötigung die Art der Zeichenfolge in eine Zahl. Sie können auch das gleiche tun, explizit mit der Anzahl-Funktion.
Analyse
parseInt und parseFloat sind die beiden Funktionen zum Parsen von strings in zahlen. Analyse halt still, wenn es trifft ein Zeichen nicht erkennen, was nützlich sein kann zum Parsen von Zeichenketten wie "92px", aber es ist auch etwas gefährlich, da es nicht geben Ihnen jede Art von Fehler auf schlechten input, statt Sie zurück zu bekommen NaN, es sei denn, der string beginnt mit einer Zahl. Whitespace-Zeichen am Anfang der Zeichenkette ignoriert. Hier ist ein Beispiel dafür, etwas anderes zu tun, was Sie wollen, und geben keine Anzeichen, dass etwas schief ging:
Es ist gute Praxis, immer die Angabe der Basis als das zweite argument. In älteren Browsern, wenn die Zeichenfolge begann mit einer 0, so würde es interpretiert werden als oktal, wenn die Basis nicht angegeben, die hat eine Menge Leute überraschen. Das Verhalten für den hexadezimalen wird ausgelöst durch mit der Zeichenfolge beginnen mit 0x, wenn keine Basis angegeben ist, z.B.
0xff
. Der standard geändert, mit ecmascript 5, so dass moderne Browser nicht mehr auslösen, oktal, wenn es eine führende 0, wenn keine Basis angegeben wurde. parseInt versteht radixes bis zur Basis 36, in diesem Fall sowohl groß-und Kleinbuchstaben werden als gleichwertig behandelt.Die änderung der Art einer Zeichenfolge in eine Zahl
Alle anderen tricks oben erwähnt, die nicht mit parseInt, beinhalten implizit die Nötigung der string in eine Zahl um. Ich ziehe dies ausdrücklich tun,
Dieses unterschiedliche Verhalten auf die parse-Methoden (obwohl es immer noch ignoriert whitespace-Zeichen). Es ist strenger: wenn Sie nicht verstehen, die gesamte Zeichenfolge als es wieder
NaN
, so können Sie es nicht verwenden für strings wie97px
. Da möchte man eine primitive Zahl anstelle einer Zahl wrapper-Objekt, stellen Sie sicher, dass Sie nicht setzennew
vor der Anzahl-Funktion.Offensichtlich, Umwandlung einer Zahl gibt man einen Wert, der vielleicht ein float statt integer, wenn Sie so wollen, eine ganze Zahl, die Sie brauchen, um es zu ändern. Es gibt ein paar Möglichkeiten, dies zu tun:
Alle bitweisen operator (hier hab ich getan, eine bitweise oder-Verknüpfung, aber Sie können auch die doppelte negation, wie in einer früheren Antwort oder ein bitshift) wandelt den Wert für eine 32bit-Ganzzahl, und die meisten von Ihnen konvertieren in eine Ganzzahl. Beachten Sie, dass diese nicht tun wollen, Sie wollen, für große Ganzzahlen. Wenn die ganze Zahl kann dargestellt werden in 32-bit, es wird wrap.
Um korrekt zu arbeiten mit größeren zahlen, sollten Sie die Rundung Methoden
Bedenken, dass alle diese Methoden verstehen, exponentielle Schreibweise, also
2e2
ist200
eher als NaN. Auch, die Anzahl der versteht, "Unendlichkeit", während der parse-Methoden nicht.Benutzerdefinierte
Ist es unwahrscheinlich, dass eine dieser Methoden genau das tun, was Sie wollen. Zum Beispiel, in der Regel würde ich wollen, dass ein Fehler geworfen, wenn das Parsen fehlschlägt, und ich brauche keine Unterstützung für die Unendlichkeit, Exponentialfunktionen oder führenden Leerzeichen. Je nach Anwendungsfall ist es manchmal sinnvoll, zu schreiben, eine benutzerdefinierte Konvertierung-Funktion.
Immer überprüfen, dass die Ausgabe von Zahl oder einer der parse-Methoden ist die Art von Nummer, die Sie erwarten. Sie werden mit ziemlicher Sicherheit verwenden möchten
isNaN
um sicherzustellen, dass die Nummer nicht NaN (in der Regel der einzige Weg, Sie finden heraus, dass das Parsen fehlgeschlagen ist).97,8,00
und ähnliches-oder nicht. Ein einfacher trick besteht darin, eine.replace(/[^0-9]/g, "")
wird entfernen Sie alle nicht-Ziffern aus der Zeichenfolge und dann die Konvertierung danach. Dies wird natürlich ignorieren, alle Arten von verrückten strings, sollten Sie wahrscheinlich die Fehler auf, anstatt Sie einfach zu Parsen...sollte wohl
.replace(/[^0-9.]/g, "")
, sonst "1.05" "105".Ganz Recht, obwohl ich würde nicht so etwas wie, dass für wichtige code-eh - es gibt so viele Möglichkeiten, Sie können lassen Sie etwas durch, dass Sie wirklich nicht wollen, lassen Sie durch.
Ich fand mit Nummer viel lesbarer im code so, danke für den Hinweis es aus wie eine Lösung.
In
var fixed = Number("97.654").toFixed(0); // rounded rather than truncated
bekommen wirstring
(wegen der.toFixed
- Methode) anstelle desnumber
(integer). Wenn wir wollen, dass die abgerundete Ganzzahl ist es wahrscheinlich besser, verwenden Sie einfachMath.round("97.654");
InformationsquelleAutor kybernetikos
ParseInt() und + sind verschiedene
InformationsquelleAutor Dalius I
Zwar eine alte Frage, aber vielleicht kann dies hilfreich sein, um jemanden.
Ich diese Möglichkeit der Umwandlung von string
intAnzahlSo, wenn Sie durch Multiplikation mit 1, der Wert ändert sich nicht, aber js automatisch eine Zahl zurück.
Aber wie es unten gezeigt wird, sollte dieser verwendet werden, wenn Sie sicher sind, dass die
str
ist eine Zahl(oder dargestellt werden kann, als eine Zahl), sonst wird es wieder NaN - not a number.können Sie erstellen einfache Funktion zu verwenden, z.B.
InformationsquelleAutor dav
Versuchen parseInt.
InformationsquelleAutor SolutionYogi
Schnellste
Test
Hier ist kein Vergleich von Geschwindigkeit (nur Mac Os)... 🙂
Chrom 'plus' und 'mul' ist der Schnellste (>700,000,00 op/Sek.), 'Math.Etage " am langsamsten ist. Für Firefox 'plus' ist der langsamste (!) 'mul' ist am schnellsten (>900,000,000 op/Sek.). In Safari 'parseInt' ist die Schnellste, 'Nummer' ist die langsamste (aber resulats ziemlich ähnlich sind, >13,000,000 <31,000,000). Also Safari für den cast von string zu int ist mehr als 10x langsamer als andere Browser. So der Gewinner ist " mul' 🙂
Können Sie führen Sie es auf Ihrem browser mit diesem link
https://jsperf.com/casttonumber
Update
Ich auch testen
var x = ~~"1000";
- in Chrome und Safari ist ein wenig langsamer alsvar x = "1000"*1
(<1%), im Firefox ist ein wenig schneller (<1%).InformationsquelleAutor Kamil Kiełczewski
Ich falsch gepostet das hier beantworten, sorry. behoben.
Dies ist eine alte Frage, aber ich Liebe diesen trick:
Den Doppel-bitweise negativ fällt alles, was nach dem Komma UND wandelt es in ein Zahlenformat. Ich habe gesagt, es ist etwas schneller als das aufrufen von Funktionen und so weiter, aber ich bin nicht ganz davon überzeugt.
EDIT: eine Andere Methode, die ich gerade gesehen hier (eine Frage, über die javascript - >>> - operator, der ein zero-fill right shift), die zeigt, dass eine Verschiebung eine Zahl durch 0 mit diesem operator wandelt die Zahl in eine uint32 das ist schön, wenn Sie auch wollen, dass es unsigned. Wieder, diese konvertiert unsigned integer, die führen kann zu seltsamen Verhalten, wenn Sie eine Zahl unterzeichnet.
InformationsquelleAutor Ian Ooi
Vorsicht, wenn Sie verwenden parseInt konvertieren von float in Exponentialschreibweise!
Zum Beispiel:
Folge
statt
parseInt
wäre nicht die richtige Arbeit für einen float.parseFloat
funktioniert in diesem Fall.InformationsquelleAutor tom
Auch als eine Randnotiz: Mootools hat die Funktion toInt (), die verwendet wird, auf eine native string (oder float (oder integer)).
SyntaxError
sind, sollten Sie einen doppelten Punkt, z.B.:2..toInt();
den ersten Punkt endet die Darstellung einerNumber
wörtlichen und der zweite Punkt ist der property-accessor.diese Frage ist nicht über mootools ist es über JavaScript.
InformationsquelleAutor Henrik Hansen
Bitte siehe das folgende Beispiel.Es wird Ihnen helfen klar Ihre Zweifel
mithilfe parseint-Funktion wird Es nur geben, op integer Gegenwart und nicht die Zeichenfolge
parseInt(aaa5)
zurückNaN
.InformationsquelleAutor zeeshan
Konvertieren von String in Integer, empfehle ich die Verwendung parseFloat und NICHT parseInt. Ist hier, warum:
Mit parseFloat:
Mit parseInt:
Also, wenn Sie bemerkt haben, parseInt verwirft die Werte nach der Dezimalstellen, während parseFloat ermöglicht Ihnen die Arbeit mit floating-point-zahlen und damit mehr für Sie geeignet, wenn Sie wollen, behalten die Werte nach Dezimalzahlen. Verwenden parseInt, wenn, und nur wenn Sie sicher sind, dass Sie möchten, dass der integer-Wert.
InformationsquelleAutor Devner
wir können
+(stringOfNumber)
anstattparseInt(stringOfNumber)
Ex:
+("21")
returns int 21 wie dieparseInt("21")
.wir können diese unären " + " - operator für die Analyse Schwimmer...
Ich denke, man kann Sie nicht nur verwenden Sie eine zusätzliche Klammer um die
+
?Ich bekomme +("21") aus dem Beispiel in der Antwort, die wir kommentieren.
Ich mag wirklich diese Lösung. Es ist nicht explizit, wie
parseInt
ist. Eine gemeinsame Umsetzung istconst myNumber = +myNumberAsAString
die aussieht wie eine standard -+=
oder=+
Betreiber auf den ersten Blick. Auch Wenn falsch verwendet, könnte es dazu führen, Verkettung von Fehlern. Diese Lösung basiert auf der Tatsache, dass 0 angenommen als die linke Seite, wenn keine Nummer vorhanden.InformationsquelleAutor RevanthKrishnaKumar V.
Versuchen
str - 0
zu konvertierenstring
zunumber
.Hier sind zwei links zum vergleichen der Leistung von mehreren Möglichkeiten zum konvertieren von string zu int
https://jsperf.com/number-vs-parseint-vs-plus
http://phrogz.net/js/string_to_number.html
laut diesem doc, die
'1'
umgewandelt werden1
durchToNumber
, dann1 - 0
wäre1
InformationsquelleAutor zangw
Es gibt viele Möglichkeiten, in JavaScript zu konvertieren eine Zeichenfolge in eine Zahl mit dem Wert... Alles einfach und praktisch ist, wählen Sie den Weg, der für Sie arbeitet:
Auch alle Mathematik Betrieb wandelt Sie zur Nummer, zum Beispiel...
Mein lieber, Weg ist, mit
+
Zeichen, das ist der elegante Weg, um konvertieren von string zu Zahl in JavaScript.ja, wahrscheinlich meinst du + ... ja, es wandelt string mit Dezimalzahlen zahlen als gut, weit verbreitet trick zu konvertieren string-Anzahl Anzahl
InformationsquelleAutor Alireza
Google gab mir diese Antwort als Ergebnis, so...
Ich tatsächlich benötigt, um "speichern", einen string, eine Ganzzahl, eine Bindung zwischen C und JavaScript, so dass ich konvertieren den string in einen integer-Wert:
int2str
Funktion wird beendet, wenn ein byte ist 0, die ein legitimes element der Wert, also dieif
...break
sollte entfernt werden, so erhalten Sie eine komplette 4-byte-Wert, der zurückgegeben wird.InformationsquelleAutor lama12345
Meiner Meinung nach, keine Antwort deckt alle Sonderfälle wie analysieren Sie ein Schwimmer sollte zu einem Fehler führen.
Es ist
parseInteger
, nichtparseNumber
. Ich denke, alle Lösungen ist ein workaround, da JS nicht unterstützt Ganzzahlen und Fließkommazahlen als getrennte Arten. Wir könnten wiedernull
stattNaN
, wenn Nicht Eine Zahl ist irreführend.InformationsquelleAutor Michał Knapik
alle der oben genannten korrekt sind. Bitte achten Sie darauf vor, dass dies eine Zahl in einen string by doing "typeot x === 'number'" andere weisen es zurück NaN
var num1 = "12423"; typeof num1;
zurückstring
.InformationsquelleAutor Shahar ドーン Levi
Eine weitere option ist die Doppel-XOR den Wert mit sich selbst:
Dieser Ausgabe:
InformationsquelleAutor BanksySan
Ich diese
diese Weise bekomme ich immer ein int zurück.
InformationsquelleAutor Mike
Ich nur Hinzugefügt, ein plus(+) vor dem string und das war die Lösung!
Hoffe es hilft 😉
InformationsquelleAutor ivahidmontazer