Neu Konvertieren einer Zeichenfolge in eine Zahl in JavaScript: Erläuterung und Codebeispiel erforderlich

sam11

Mitglied
24. September 2022
14
0
India
Ich versuche, in JavaScript eine Zeichenfolge in eine Zahl umzuwandeln, erhalte jedoch unerwartete Ergebnisse. Obwohl ich Funktionen wie parseInt() und parseFloat() verwendet habe, bin ich in bestimmten Fällen immer noch verwirrt über das Verhalten. Könnte jemand den Prozess der Konvertierung einer Zeichenfolge in eine Zahl erläutern und ein Codebeispiel bereitstellen?

Folgendes habe ich bisher versucht:

JavaScript:
let stringNumber = "123";
let parsedInt = parseInt(stringNumber);
let parsedFloat = parseFloat(stringNumber);

console.log(typeof parsedInt, parsedInt); // Output: number 123
console.log(typeof parsedFloat, parsedFloat); // Output: number 123

Wenn ich jedoch auf Zeichenfolgen mit nicht numerischen Zeichen oder Dezimalstellen stoße, scheinen die Ergebnisse inkonsistent zu sein:

JavaScript:
let nonNumericString = "abc";
let stringWithDecimal = "45.67";

let parsedNonNumeric = parseInt(nonNumericString);
let parsedWithDecimal = parseInt(stringWithDecimal);

console.log(parsedNonNumeric); // Output: NaN
console.log(parsedWithDecimal); // Output: 45

Kann mir jemand erklären, warum sich die Konvertierung so verhält und wie ich Strings zuverlässig in Zahlen umwandeln kann, auch wenn es sich um nicht numerische Zeichen oder Dezimalzahlen handelt? Ich habe auf mehreren Websites gesucht, darunter auch auf Scaler, bin aber noch nicht auf eine Lösung gestoßen. Ich würde mich über eine klare Erklärung und einige Codebeispiele freuen, um die richtigen Verfahren zu zeigen. Ich freue mich schon jetzt über Ihre Hilfe!
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
345
Halle (Saale)
Was ist daran inkonsistent? Bzw. was hättest du denn erwartet, wenn man eine Fließkommazahl als Int parst?
Ansonsten schau dir evtl. mal die Number-Klasse an: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
Prüfen, ob das ganze evtl. "NaN" ist, musst du aber natürlich trotzdem:

Code:
let parsedNonNumeric = new Number("abc");
let parsedWithDecimal = new Number("45.67");

console.log(isNaN(parsedNonNumeric)); // true
console.log(isNaN(parsedWithDecimal)); // false
console.log(parsedNonNumeric.toString()); // Output: NaN
console.log(parsedWithDecimal.toString()); // Output: "45.67"
console.log(parsedWithDecimal.valueOf()); // Output: 45.67
 

Ähnliche Themen