2500 Stimmen

Wie wandelt man in JavaScript eine Zeichenkette in eine ganze Zahl um?

Wie konvertiere ich in JavaScript eine Zeichenkette in eine ganze Zahl?

7 Stimmen

Auf dieser Seite finden Sie unten eine gute Tabelle, in der verschiedene Umrechnungsmethoden verglichen werden: medium.com/@nikjohn/

1 Stimmen

In Ermangelung einer Klärung durch den Auftraggeber könnte diese Frage im Sinne einer Umwandlung interpretiert werden jede Zeichenkette in eine Zahl umzuwandeln, d.h. "Hund" in eine Zahl zu verwandeln (was natürlich auch möglich ist).

2 Stimmen

Er hat den Köder geschluckt: @DanielCarrera und doch hat niemand hier die Frage in diesem Sinne interpretiert. Wahrscheinlich, weil sie, wenn das das Ziel gewesen wäre, sehr wahrscheinlich ganz anders formuliert worden wäre. Schließlich wird das Verfahren, das dabei zum Einsatz kommt ("Hashing"), nicht als "Hash" bezeichnet und wurde auch nie als " Konvertierung zu einer ganzen Zahl".

40voto

dav Punkte 8407

Es ist zwar eine alte Frage, aber vielleicht kann sie jemandem weiterhelfen.

Ich verwende diese Art der Umwandlung von String in int Nummer

var str = "25";       // string
var number = str*1;   // number

Wenn man also mit 1 multipliziert, ändert sich der Wert nicht, sondern js gibt automatisch eine Zahl zurück.

Wie unten gezeigt wird, sollte dies jedoch nur verwendet werden, wenn Sie sicher sind, dass die str eine Zahl ist (oder als Zahl dargestellt werden kann), andernfalls wird NaN - keine Zahl - zurückgegeben.

können Sie eine einfache Funktion erstellen, die Sie verwenden können, z. B.

function toNumber(str) {
   return str*1;
}

enter image description here

0 Stimmen

Bitte überprüfen Warum nicht Bilder von Code/Fehlern hochladen, wenn man eine Frage stellt? (z.B., "Bilder sollten nur verwendet werden, um Probleme zu veranschaulichen, die kann auf keine andere Weise deutlich gemacht werden, z. B. Screenshots einer Benutzeroberfläche zur Verfügung zu stellen". ) und das Richtige tun (dies gilt auch für Antworten und Programmausgaben). Vielen Dank im Voraus.

38voto

SolutionYogi Punkte 30824

Versuchen Sie parseInt.

var number = parseInt("10", 10); //number will have value of 10.

0 Stimmen

Die richtige Antwort auf die Frage

31voto

Ian Ooi Punkte 1584

Ich habe hier die falsche Antwort gepostet, tut mir leid. korrigiert.

Dies ist eine alte Frage, aber ich liebe diesen Trick:

~~"2.123"; //2
~~"5"; //5

Die doppelte bitweise Verneinung lässt alles nach dem Dezimalpunkt weg und wandelt es in ein Zahlenformat um. Mir wurde gesagt, dass es etwas schneller ist als der Aufruf von Funktionen und so weiter, aber ich bin nicht ganz überzeugt.

EDIT: Eine andere Methode, die ich gerade gesehen habe aquí (eine Frage zum Javascript-Operator >>>, der eine rechte Nullverschiebung ist), die zeigt, dass das Verschieben einer Zahl um 0 mit diesem Operator die Zahl in eine uint32 was schön ist, wenn Sie es auch wollen ohne Vorzeichen . Auch dies ist eine Umrechnung in eine Ganzzahl ohne Vorzeichen was zu seltsamen Verhaltensweisen führen kann, wenn Sie eine Zahl mit Vorzeichen verwenden.

"-2.123" >>> 0; // 4294967294
"2.123" >>> 0; // 2
"-5" >>> 0; // 4294967291
"5" >>> 0; // 5

0 Stimmen

Diese funktioniert nur für 32bit-Zahlen . Bei bitweisen Operationen werden größere Werte zwangsweise abgeschnitten, so dass parseInt("4294967296") y ~~"4294967296" zu unterschiedlichen Ergebnissen kommen. Nämlich, parseInt wird zurückgegeben 4294967296 während ~~ wird zurückgegeben 0 .

23voto

zeeshan Punkte 309

Bitte sehen Sie sich das folgende Beispiel an, um Ihre Zweifel auszuräumen

Example                  Result

parseInt("4")            4
parseInt("5aaa")         5
parseInt("4.33333")      4
parseInt("aaa");         NaN (means "Not a Number")

mit der Funktion parseint wird nur die Ganzzahl und nicht die Zeichenkette ausgegeben

20voto

TechySharnav Punkte 3763

In Javascript können Sie Folgendes tun:-

ParseInt

parseInt("10.5") //returns 10

Multiplizieren mit 1

var s = "10";
s = s*1;  //returns 10

Unärer Operator (+) verwenden

var s = "10";
s = +s;  //returns 10

Bitwise-Operator verwenden

(Hinweis: Es beginnt zu brechen nach 2140000000 . Bsp:- ~~"2150000000" = -2144967296 )

var s= "10.5";
s = ~~s; //returns 10

Math.floor() oder Math.ceil() verwenden

var s = "10";
s = Math.floor(s) || Math.ceil(s); //returns 10

0 Stimmen

Dies ist mehr oder weniger eine Wiederholung von Nosrednas Antwort aus dem Jahr 2009.

0 Stimmen

@PeterMortensen Es fehlte der bitweise Operator und die Multiplikation mit 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X