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)
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
.
Specyfikacje
Kompatybilność
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.