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 eine Zeichenkette zurück, die diesen Zahlenwert darstellt.
Probieren Sie es aus
Syntax
toString()
toString(radix)
Parameter
radix
Optional-
Ein ganzzahliger Wert im Bereich von
2
bis36
, der die Basis angibt, die für die Darstellung des Zahlenwerts verwendet werden soll. Standardmäßig ist die Basis 10.
Rückgabewert
Eine Zeichenkette, die den angegebenen Zahlenwert darstellt. Wissenschaftliche Notation wird verwendet, wenn die Basis 10 ist und die Größe 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 Zeichenkettendarstellung des Wertes in der angegebenen Basis zurück.
Für Basen über 10 geben die 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 ist selbst dann der Fall, wenn die Basis 2 ist; die zurückgegebene Zeichenkette ist die positive binäre Darstellung des Zahlenwerts, dem ein -
vorangestellt ist, nicht das Zweierkomplement des Zahlenwerts.
Sowohl 0
als auch -0
haben "0"
als ihre Zeichenketten-Darstellung. Infinity
gibt "Infinity"
zurück und NaN
gibt "NaN"
zurück.
Wenn die Zahl keine ganze Zahl ist, wird das Dezimalkomma .
verwendet, um die Dezimalstellen zu trennen. Wissenschaftliche Notation wird verwendet, wenn die Basis 10 ist und die Größe der Zahl (ohne Vorzeichen) größer oder gleich 1021 oder kleiner als 10-6 ist. In diesem Fall gibt die zurückgegebene Zeichenkette immer explizit das Vorzeichen des Exponenten 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 Basis-2-Wissenschaftsnotation (siehe Zahlenkodierung). Allerdings verwendet die toString()
-Methode diese genaueste Darstellung des Zahlenwerts nicht direkt. Stattdessen verwendet der Algorithmus die geringste Anzahl signifikanter Stellen, die erforderlich ist, um die Ausgabe von benachbarten Zahlenwerten zu unterscheiden. Wenn die Zahl beispielsweise groß ist, gibt es viele gleichwertige Zeichenketten-Darstellungen derselben Gleitkommazahl, und toString()
wählt diejenige mit den meisten 0en auf der rechten Seite (für jede gegebene Basis).
console.log((1000000000000000128).toString()); // "1000000000000000100"
console.log(1000000000000000100 === 1000000000000000128); // true
Auf der anderen Seite erlauben Ihnen Number.prototype.toFixed()
und Number.prototype.toPrecision()
, die Genauigkeit zu spezifizieren und können präziser als toString()
sein.
Die toString()
-Methode erfordert, dass ihr this
-Wert ein Number
-Primitiv oder Wrapper-Objekt ist. Sie löst eine TypeError
aus, wenn andere this
-Werte ohne den Versuch, sie in Zahlenwerte umzuwandeln, verwendet werden.
Da Number
keine [Symbol.toPrimitive]()
-Methode hat, ruft JavaScript automatisch die toString()
-Methode auf, wenn ein Number
-Objekt in einem Kontext verwendet wird, der eine Zeichenkette erwartet, wie in einem Template Literal. Allerdings konsultieren Number
-Primitive die toString()
-Methode nicht, um in Zeichenketten umgewandelt zu werden — stattdessen werden sie direkt mit demselben Algorithmus wie die initiale toString()
-Implementierung umgewandelt.
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 Zahlenzeichenketten
Wenn Sie eine Zeichenkette haben, die eine Zahl in einer nicht-dezimalen Basis darstellt, können Sie parseInt()
und toString()
verwenden, um sie in eine andere Basis umzuwandeln.
const hex = "CAFEBABE";
const bin = parseInt(hex, 16).toString(2); // "11001010111111101011101010111110"
Achten Sie auf Präzisionsverluste: Wenn die ursprüngliche Zahlzeichenkette zu groß ist (größer als Number.MAX_SAFE_INTEGER
, zum Beispiel), sollten Sie stattdessen ein BigInt
verwenden. Allerdings unterstützt der BigInt
-Konstruktor nur Zeichenketten, die Zahlenliterale darstellen (d. h. Zeichenketten, 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 Radix-Konverter selbst schreiben oder eine Bibliothek verwenden.
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-number.prototype.tostring |
Browser-Kompatibilität
BCD tables only load in the browser