Number.prototype.toLocaleString()

Metoda toLocaleString() zwraca łańcuch znaków przedstawiający dany numer w formacie wybranej lokalizacji.

Nowe argumenty - lokalizacje i opcje - pozwalają na wybranie lokalizacji w jakiej ma zostać przedstawiona liczba. Starsza implementacja, która nie posiadała tych argumentów, zwracała łańcuch znaków zależny od implementacji danego środowiska.

Składnia

numObj.toLocaleString([lokalizacje [, opcje]])

Parametry

W sekcji kompatybilności możesz sprawdzić, które przeglądarki obsługują argumenty lokalizacji i opcji . W sekcji Przykład: Sprawdzanie obsługi argumentów lokalizacji i opcji rozpisane są sposoby na przetestowanie obsługiwanych przez przeglądarkę argumentów tej metody.

Info: ECMAScript Internationalization API, zaimplementowane w Firefoxie 29, dodaje obsługę parametrylokalizacje do metodyNumber.toLocaleString(). Jeśli argument nie zostanie podany (undefined) metoda przyjmię lokalizację systemu operacyjnego. Poprzednie wersje Firefoxa zwracały liczby z lokalizacji Western Arabic. Zmiana zostala zgłoszona jako regresja rzutująca na wsteczną kompatybilność metody, i wkrótce zostanie naprawiona. (błąd 999003)

{{page('/pl-PL/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat', 'Parameters')}}

Zwracana wartość

Łańcuch znaków przedstawiający liczbę w danym formacie.

Przykłady

Przykłady użycia metody toLocaleString

Podstawowy sposób użycia, bez podanych argumentów, zwróci nam łańcuch znaków w domyślnej lokalizacji i z domyślnymi opcjami.

var liczba = 3500;

console.log(liczba.toLocaleString()); // Wyświetli "3 500", jeśli twoją lokalizacją jest „pl-PL”

Sprawdzanie dostępności argumentów lokalizacji i opcji

Nie wszystkie przeglądarki obsługuję argumenty lokalizacji i opcji. Aby to sprawdzić w wersji języka ES5.1 i późniejszych możemy użyć wyjątku RangeError, który zostanie rzucony gdy niepoprawna nazwa lokalizacji zostanie użyta:

function toLocaleStringSupportsLocales() {
  var liczba = 0;
  try {
    liczba.toLocaleString('i');
  } catch (e) {
    return e.name === 'RangeError';
  }
  return false;
}

W wersjach przed ES5.1 nie było obowiązku wyrzucania wyjątku Range Error jeśli metoda toLocaleString została wywołana z argumentami.

Sprawdzenie działające na wszystkich wersjach języka przed 5.1 polega na użyciu funkcjonalności niezbędnych do działania tych argumentów bezpośrednio na Number.prototype.toLocaleString:

function toLocaleStringSupportsOptions() {
  return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function');
}

Sprawdzamy tutaj czy istnieje globalny obiekt Intl, czy nie jest nullem, a także czy posiada właściwość NumberFormat, która jest funkcją.

Przykłady użycia lokalizacji

Przykład ten pokazuje kilka różnych lokalizacji. Aby uzyskać foramt języka interfejsu użytkownika upewnij się, że podajesz tę lokalizację (i dla pewności kilka innych jako fallbacki) przy pomocy aargumentu localizacji:

var liczba = 123456.789;

// Język niemiecki oddziela części dziesiętne przecinkiem, a tysiące kropką
console.log(liczba.toLocaleString('de-DE'));
// → 123.456,789

// W większości krajów arabskich używa cyfr Eastern Arabic
console.log(liczba.toLocaleString('ar-EG'));
// → ١٢٣٤٥٦٫٧٨٩

// Indyjski używa separatorów tysięcy/lakh/crore
console.log(liczba.toLocaleString('en-IN'));
// → 1,23,456.789

// Klucz rozszerzeń „nu” pyta o system numeryczny, np. Chiński system dziesiętny
console.log(liczba.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
// → 一二三,四五六.七八九

// jeśli masz zamiar użyć lokalizacji, która może nie być obsługiwana
// jak np. Balinese, zawsze dodaj drugi lokalizację, tutaj Indonezyjską
console.log(liczba.toLocaleString(['ban', 'id']));
// → 123.456,789

Przykłady użycia opcji

Rezultaty metodytoLocaleString  mogą być dostosowywane przy pomocy argumentu opcje:

var liczba = 123456.789;

// format walutowy
console.log(liczba.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// → 123.456,79 €

// Japoński yen
console.log(liczba.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
// → ¥123,457

// ogranicz wyświetlanie do 3 miejsc znaczących
console.log(liczba.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
// → 1,23,000

// Użyj domyślnego języka hosta z opcjami formatowania liczby
var num = 30000.65;
console.log(num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}));
// → "30,000.65" w języku angielskim lub
// → "30.000,65" w języku niemieckiem lub
// → "30 000,65" w języku francuskim

Wydajność

Jeśli zamierzasz formatować wiele liczb, lepiej użyć obiektu NumberFormat i formatować przy pomocy metody NumberFormat.format (en-US).

Specyfikacje

Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Standard Pierwsza definicja. Zaimplementowane w JavaScript 1.5.
ECMAScript 5.1 (ECMA-262)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript (ECMA-262)
The definition of 'Number.prototype.toLocaleString' in that specification.
Living Standard  
ECMAScript Internationalization API 1.0 (ECMA-402)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript Internationalization API 2.0 (ECMA-402)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript Internationalization API (ECMA-402)
The definition of 'Number.prototype.toLocaleString' in that specification.
Living Standard  

Kompatybilność

BCD tables only load in the browser

Zobacz także