Number.prototype.toLocaleString()

Die 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. Wenn style auf "currency" gesetzt ist, muss die currency 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 und false. Der Standatdwert ist true.

Die folgenden Eingeschaften fallen in zwei Gruppen: minimumIntegerDigits, minimumFractionDigits, und maximumFractionDigits in einer Gruppe, minimumSignificantDigits und maximumSignificantDigits 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 und 3. Der Standardwert für Währungen ist der größere von minimumFractionDigits 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 von minimumFractionDigits und 0.
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

Spezifikation Status Kommentar
ECMAScript 3rd Edition (ECMA-262) Standard Initiale Definition. Implementiert in JavaScript 1.5.
ECMAScript 5.1 (ECMA-262)
Die Definition von 'Number.prototype.toLocaleString' in dieser Spezifikation.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Number.prototype.toLocaleString' in dieser Spezifikation.
Standard  
ECMAScript 2017 Draft (ECMA-262)
Die Definition von 'Number.prototype.toLocaleString' in dieser Spezifikation.
Entwurf  
ECMAScript Internationalization API 1.0 (ECMA-402)
Die Definition von 'Number.prototype.toLocaleString' in dieser Spezifikation.
Standard  
ECMAScript Internationalization API 2.0 (ECMA-402)
Die Definition von 'Number.prototype.toLocaleString' in dieser Spezifikation.
Standard  
ECMAScript Internationalization API 4.0 (ECMA-402)
Die Definition von 'Number.prototype.toLocaleString' in dieser Spezifikation.
Entwurf  

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

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: sdeitmer, PierreCorell, schlagi123
 Zuletzt aktualisiert von: sdeitmer,