Signatur
Beschreibung
Die Methode toFixed() von Number-Werten gibt einen String zurück, der diese Zahl in Festkommadarstellung mit der angegebenen Anzahl an Nachkommastellen repräsentiert.
Die Methode toFixed() gibt eine String-Darstellung einer Zahl ohne Exponentialschreibweise und mit genau digits Ziffern nach dem Dezimalpunkt zurück. Die Zahl wird bei Bedarf gerundet, und der Nachkommaanteil wird bei Bedarf mit Nullen aufgefüllt, sodass er die angegebene Länge hat.
Ist der Absolutwert der Zahl größer oder gleich 1021, verwendet diese Methode denselben Algorithmus wie Number.prototype.toString() und gibt einen String in Exponentialschreibweise zurück. toFixed() gibt "Infinity", "NaN" oder "-Infinity" zurück, wenn der Wert der Zahl nicht endlich ist.
Die Ausgabe von toFixed() kann für einige Werte präziser sein als toString(), da toString() nur so viele signifikante Stellen ausgibt, wie nötig sind, um die Zahl von benachbarten Zahlenwerten zu unterscheiden. Zum Beispiel:
Das Wählen einer zu hohen digits-Genauigkeit kann jedoch unerwartete Ergebnisse liefern, da dezimale Bruchzahlen im Fließkommaformat nicht exakt darstellbar sind. Zum Beispiel:
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $digits | number | — | Die Anzahl der Ziffern, die nach dem Dezimalpunkt erscheinen sollen; sollte ein Wert zwischen 0 und 100 (jeweils einschließlich) sein. Wird dieses Argument weggelassen, wird es als 0 behandelt. |
Rückgabewert
Number.prototype.toString()).Beispiele
Präzisionsvergleich mit toString()
(1000000000000000128).toString(); // '1000000000000000100'
(1000000000000000128).toFixed(0); // '1000000000000000128'
Ungenauigkeit bei hoher Präzision
(0.3).toFixed(50); // '0.29999999999999998889776975374843459576368331909180'
toFixed() verwenden
const numObj = 12345.6789;
numObj.toFixed(); // '12346'; Rundung, kein Nachkommaanteil
numObj.toFixed(1); // '12345.7'; wird aufgerundet
numObj.toFixed(6); // '12345.678900'; zusätzliche Nullen
(1.23e20).toFixed(2); // '123000000000000000000.00'
(1.23e-10).toFixed(2); // '0.00'
(2.34).toFixed(1); // '2.3'
(2.35).toFixed(1); // '2.4'; wird aufgerundet
(2.55).toFixed(1); // '2.5'
// wird abgerundet, da nicht exakt als Float darstellbar und der
// nächste darstellbare Float kleiner ist
(2.449999999999999999).toFixed(1); // '2.5'
// wird aufgerundet, da weniger als Number.EPSILON von 2.45 entfernt.
// Dieses Literal kodiert tatsächlich denselben Zahlenwert wie 2.45
(6.02 * 10 ** 23).toFixed(50); // '6.019999999999999e+23'; große Zahlen verwenden weiterhin die Exponentialschreibweise
toFixed() mit negativen Zahlen verwenden
-2.34.toFixed(1); // -2.3; eine Zahl
(-2.34).toFixed(1); // '-2.3'
// Wichtig · Fallstricke
Da der Elementzugriff eine höhere Präzedenz als das unäre Minus hat, muss der Ausdruck mit der negativen Zahl gruppiert werden, um einen String zu erhalten.
Exceptions: RangeError — wird geworfen, wenn digits nicht zwischen 0 und 100 (einschließlich) liegt. TypeError — wird geworfen, wenn diese Methode auf einem Objekt aufgerufen wird, das kein Number ist.