toLocaleString()
Methode gibt eine Zahl als String in sprachabhängiger Formatierung zurück.
Die neuen locales
und options
Argumente ermöglichen es Anwendungen, sprachübliche Formatierungskonventionen zu benutzen und diese anzupassen. In älteren Implementierungen werden die locales
und options
Argumente ignoriert, und die Formatierung des Strings ist implementierungsabhängig.
Syntax
numObj.toLocaleString(
[locales [, options]])
Parameter
Prüfe die Browserkompatibilität, um zu sehen, welcher Browser den locales
und options
Parameter unterstützt, und das Beispiel Unterstützung für locales
und options
Argumente prüfen für eine Funktionalitätsprüfung.
Anmerkung: Die ECMAScript Internationalization API, implementiert in Firefox 29, fügte das Argument locales
zur Methode Number.toLocaleString()
zu. Wenn das Argument undefined
ist, arbeitet die Methode nach der lokalisierung des OS, während Vorgängerversinen von Firefox Western Arabic zurück geben. Diese Änderung wurde als eine Rückwärtskompatibilität gemeldet. Das Problem wurde bereits behoben (Bug 999003).
locales
- Optional. Ein String mit einem BCP 47 Sprachcode, doer ein Array mit solchen Strings. Für die generelle Form und Interopretation des
locales
Arguments, siehe im Intl Artikel. Die folgenden Unicode Erweiterungsschlüssel sind erlaubt: -
nu
- Das einzusetzende Nummerierungssystem. Mögliche Wert sind:
"arab"
,"arabext"
,"bali"
,"beng"
,"deva"
,"fullwide"
,"gujr"
,"guru"
,"hanidec"
,"khmr"
,"knda"
,"laoo"
,"latn"
,"limb"
,"mlym"
,"mong"
,"mymr"
,"orya"
,"tamldec"
,"telu"
,"thai"
,"tibt"
.
options
-
Optional. Ein Objekt mit einigen oder allen folgenden Eigenschaften:
localeMatcher
- Der Spracherkennungsalgorithmus. Mögliche Werte sind
"lookup"
und"best fit"
. Der Standardwert ist"best fit"
. Für mehr Informationen siehe in den Intl Artikel. style
- Der eingesetzte Formatierungsstyle. Mögliche Werte sind
"decimal"
für einfache Zahlenformate,"currency"
für Währungen,"percent"
für Prozentzahlen. Der Standardwert ist"decimal"
. currency
- Die eingesetzt Währung im Format. Mögliche Werte sind die ISO 4217 Währungscodes wie zum Beispiel
"USD"
für US Dollar,"EUR"
für Euro und"CNY"
für Chinesischen RMB (siehe Current currency & funds code list). Es gibt keinen Standatdwert. Wennstyle
auf"currency"
gesetzt ist, muss diecurrency
Eigenschaft gesetzt werden. currencyDisplay
- Währungsanzeige im String. Mögliche Werte sind
"symbol"
für das Symbolen wie zum Beispiel €,"code"
für ISO Währungscodes,"name"
für den Namen der Währung wie zum Beispiel"dollar"
. Der Standardwert ist"symbol"
. useGrouping
- Gruppierung der Zahl. Wird für das Ein- und Ausschlaten der Tausendertrenner oder thousand/lakh/crore-Trenner eingesetzt. Mögliche Werte sind
true
undfalse
. Der Standatdwert isttrue
.
Die folgenden Eingeschaften fallen in zwei Gruppen:
minimumIntegerDigits
,minimumFractionDigits
, undmaximumFractionDigits
in einer Gruppe,minimumSignificantDigits
undmaximumSignificantDigits
in der anderen. Wenn nur eine Eigenschaft der zweiten Gruppe genutzt wird, wird die erste Gruppe ignoriert.minimumIntegerDigits
- Die minimale Anzahl von Ganzzahl Ziffern. Mögliche Werte sind zwischen 1 und 21. Der Standatdwert ist 1.
minimumFractionDigits
- Die minimale Anzahl von Nachkommastellen. Mögliche Werte sind zwischen 0 und 20. Der Standardwert für Zahlen und Prozentzahlen ist 0. Der Standard für Währungen ist die Anzahl der Stellen für die Untereinheit der Währung, die eingesetzt wird (ISO 4217 currency code list) oder 2, wenn die Währung nicht unterstützt wird.
maximumFractionDigits
- Die Maximale Anzahl von Nachkommastellen. Mögliche Werte sind zwischen 0 und 20. Der Standardwert für einfache Zahlen ist die größere Zahl von
minimumFractionDigits
und3
. Der Standardwert für Währungen ist der größere vonminimumFractionDigits
und der Anzahl der Stellen für die Untereinheit der Währung oder 2 wenn die Währung nicht unterstützt wird. Der Standardwert für Prozentzahlen ist die größere Zahl vonminimumFractionDigits
und0
. minimumSignificantDigits
- Die minimale Anzahl von signifikanten Stellen. Mögliche Werte sind zwischen 1 und 21. Der Standardwert ist 1.
maximumSignificantDigits
- Die maximale Anzahl von signifikanten Stellen. Mögliche Werte sind zwischen 1 und 21. Der Standardwert ist
minimumSignificantDigits
.
Rückgabewert
Einen String, der die gegebene Zahl in einer sprachspezifischen Formatierung repräsentiert.
Beispiele
Einsatz von toLocaleString()
Bei der Nutzung ohne Parameter wird der string in der Standardsprache ohne Optionen zurückgegeben:
var number = 3500; console.log(number.toLocaleString()); // Ausgabe: "3.500" wenn in Deutscher locale
Unterstützung für locales
und options
Argumente prüfen
Die locales
und options
Argumente sind noch nicht in allen Browsern unterstützt. Zur Prüfung der Unterstützung von ES5.1 und neueren Implementierungen wird vorausgesetzt, dass unbekannte Sprachen zu einem RangeError
führen, was folgendermaßen eingesetzt werden kann:
function toLocaleStringSupportsLocales() { var number = 0; try { number.toLocaleString('i'); } catch (e) { return e.name === 'RangeError'; } return false; }
Vor ES5.1 mussten die Implementierungen keinen RangeError
erzeugen, wenn toLocaleString
mit Argumenten aufgerufen wurde.
Eine Prüfung, die in allen Browser funktioniert, auch in denen, die ECMA-262 vor ES5.1 unterstützen, ist die Prüfung auf Funktionen aus ECMA-402, welche Optionen in Number.prototype.toLocaleString
direkt unterstützen:
function toLocaleStringSupportsOptions() { return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function'); }
Diese Tests auf dem globalen Intl
Objekt prüfen, ob das Objekt existiert und die Eigenschaft vom Typ Funktion Intl.NumberFormat
hat.
Einsatz von locales
Diese Beispiel zeigt einige der Variationen in Internationalen Zahlenformaten. Um das Format der Sprache zu bekommen, welches in der Anwendung benutzt wird, spezifiziere die Sprache (und mögliche Rückfallsprachen (fallback)) mit dem locales
Argument.
var number = 123456.789; // Englische Benutzer sehen ein Punkt anstatt eines Kommas als Dezimaltrenner console.log(number.toLocaleString('en-GB')); // → 123.456,789 // Arabisch ist in den meisten arabisch Sprechenden Ländern eingesetzt (Eastern Arabic) Ziffern console.log(number.toLocaleString('ar-EG')); // → ١٢٣٤٥٦٫٧٨٩ // Indien benutzt Tausendertrennzeichen bei Tausend und allen weiteren zwei Stellen console.log(number.toLocaleString('en-IN')); // → 1,23,456.789 // Chinesisches Zahlensystem console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec')); // → 一二三,四五六.七八九 // Wenn eine Sprache übergeben werden soll, die vielleicht nicht // unterstützt wird (Balinesisch), nutze eine fallback Sprache (Indonesisch) console.log(number.toLocaleString(['ban', 'id'])); // → 123.456,789
Einsatz von options
Das Ergebnis von toLocaleString
kann durch das options
Argument angepasst werden.
var number = 123456.789; // Währungsformat console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })); // → 123.456,79 € // Der Japanische Yen hat keine Unterwährung (z. B. Cent) console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })) // → ¥123,457 // Limitiert auf drei signifikante Stellen console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 })); // → 1,23,000
Performance
Wenn eine lange Zahl formatiert werden soll, ist es besser ein NumberFormat
Objekt zu erstellen und die Funktion NumberFormat.format
zu benutzen.
Spezifikationen
Browserkompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |
locales und options Argument |
24 | 29 (29) | 11 | 15 | Nicht unterstützt |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |
locales und options Argument |
Nicht unterstützt | 26 | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |