Number.prototype.toString()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die toString()
Methode von Number
Werten gibt einen String zurück, der diesen Zahlenwert darstellt.
Probieren Sie es aus
function hexColour(c) {
if (c < 256) {
return Math.abs(c).toString(16);
}
return 0;
}
console.log(hexColour(233));
// Expected output: "e9"
console.log(hexColour("11"));
// Expected output: "b"
Syntax
toString()
toString(radix)
Parameter
radix
Optional-
Ein Integer im Bereich von
2
bis36
, der die Basis angibt, die zur Darstellung des Zahlenwerts verwendet werden soll. Standardmäßig 10.
Rückgabewert
Ein String, der den angegebenen Zahlenwert darstellt. Die wissenschaftliche Notation wird verwendet, wenn die Basis 10 ist und die Größenordnung der Zahl (ohne Vorzeichen) größer oder gleich 1021 oder kleiner als 10-6 ist.
Ausnahmen
RangeError
-
Wird ausgelöst, wenn
radix
kleiner als 2 oder größer als 36 ist. TypeError
-
Wird ausgelöst, wenn diese Methode auf einem Objekt aufgerufen wird, das kein
Number
ist.
Beschreibung
Das Number
-Objekt überschreibt die toString
-Methode von Object
; es erbt nicht
Object.prototype.toString()
. Für Number
-Werte gibt die toString
-Methode eine String-Darstellung des Werts in der angegebenen Basis zurück.
Für Basen über 10 geben Buchstaben des Alphabets Ziffern größer als 9 an. Zum Beispiel werden für hexadezimale Zahlen (Basis 16) a
bis f
verwendet.
Wenn der angegebene Zahlenwert negativ ist, bleibt das Vorzeichen erhalten. Dies gilt auch, wenn die Basis 2 ist; der zurückgegebene String ist die positive Binärdarstellung des Zahlenwerts, der durch ein -
-Zeichen vorangestellt wird, nicht das Zweierkomplement des Zahlenwerts.
Sowohl 0
als auch -0
haben "0"
als ihre String-Darstellung. Infinity
gibt "Infinity"
zurück und NaN
gibt "NaN"
zurück.
Wenn die Zahl keine ganze Zahl ist, wird der Dezimalpunkt .
verwendet, um die Dezimalstellen zu trennen. Wissenschaftliche Notation wird verwendet, wenn die Basis 10 ist und die Größenordnung der Zahl (ohne Vorzeichen) größer oder gleich 1021 oder kleiner als 10-6 ist. In diesem Fall gibt der zurückgegebene String immer das Vorzeichen des Exponenten explizit an.
console.log((10 ** 21.5).toString()); // "3.1622776601683794e+21"
console.log((10 ** 21.5).toString(8)); // "526665530627250154000000"
Die zugrunde liegende Darstellung für Gleitkommazahlen ist die wissenschaftliche Notation im Basis-2-System (siehe number encoding). Allerdings verwendet die toString()
-Methode nicht direkt diese präziseste Darstellung des Zahlenwerts. Stattdessen benutzt der Algorithmus die geringste Anzahl signifikanter Zahlen, die nötig sind, um die Ausgabe von benachbarten Zahlenwerten zu unterscheiden. Zum Beispiel gibt es bei einer großen Zahl viele gleichwertige String-Darstellungen derselben Gleitkommazahl, und toString()
wird diejenige mit den meisten 0en rechts wählen (für jede gegebene Basis).
console.log((1000000000000000128).toString()); // "1000000000000000100"
console.log(1000000000000000100 === 1000000000000000128); // true
Andererseits erlauben Ihnen Number.prototype.toFixed()
und Number.prototype.toPrecision()
, die Genauigkeit anzugeben und können präziser sein als toString()
.
Die toString()
-Methode erfordert, dass ihr this
-Wert ein Number
-Primitive oder Wrapper-Objekt ist. Sie löst einen TypeError
für andere this
-Werte aus, ohne zu versuchen, sie in Zahlenwerte umzuwandeln.
Da Number
keine Methode [Symbol.toPrimitive]()
hat, ruft JavaScript die toString()
-Methode automatisch auf, wenn ein Number
-Objekt in einem Kontext verwendet wird, der einen String erwartet, wie in einem Template-Literal. Number
-Primitive-Werte konsultieren jedoch nicht die toString()
-Methode, um in Strings umgewandelt zu werden — vielmehr werden sie direkt mit demselben Algorithmus in Strings umgewandelt wie die ursprüngliche toString()
-Implementierung.
Number.prototype.toString = () => "Overridden";
console.log(`${1}`); // "1"
console.log(`${new Number(1)}`); // "Overridden"
Beispiele
Verwendung von toString()
const count = 10;
console.log(count.toString()); // "10"
console.log((17).toString()); // "17"
console.log((17.2).toString()); // "17.2"
const x = 6;
console.log(x.toString(2)); // "110"
console.log((254).toString(16)); // "fe"
console.log((-10).toString(2)); // "-1010"
console.log((-0xff).toString(2)); // "-11111111"
Umwandlung der Basis von Zahlenstrings
Wenn Sie einen String haben, der eine Zahl in einer nicht-dezimale Basis darstellt, können Sie parseInt()
und toString()
nutzen, um sie in eine andere Basis zu konvertieren.
const hex = "CAFEBABE";
const bin = parseInt(hex, 16).toString(2); // "11001010111111101011101010111110"
Seien Sie vorsichtig bei einem Verlust an Genauigkeit: Wenn der ursprüngliche Zahlenstring zu groß ist (zum Beispiel größer als Number.MAX_SAFE_INTEGER
), sollten Sie stattdessen ein BigInt
verwenden. Der BigInt
-Konstruktor unterstützt jedoch nur Strings, die Zahlenliterale darstellen (d.h. Strings, die mit 0b
, 0o
, 0x
beginnen). Falls Ihre ursprüngliche Basis nicht binär, oktal, dezimal oder hexadezimal ist, müssen Sie möglicherweise Ihren eigenen Basis-Konverter schreiben oder eine Bibliothek verwenden.
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-number.prototype.tostring |