Number. prototype. toLocaleString()
Formatuje liczbę według zwyczajów wybranego języka: separatory tysięcy, przecinek, waluty i procenty.
- Zwraca
- Napis z liczbą sformatowaną według zasad wybranego języka.
Przykład
#const score = 1234567.891
console.log(score.toLocaleString('pl-PL'))
console.log(score.toLocaleString('en-US'))
console.log((0.25).toLocaleString('pl-PL', { style: 'percent' }))Definicja i zastosowanie
#Metoda toLocaleString() zamienia liczbę na tekst zapisany tak, jak przyjęło się w danym języku i kraju. Dla "pl-PL" część dziesiętną oddziela przecinek, a tysiące spacja, więc 12345.6 stanie się „12 345,6”. Dla "en-US" ta sama liczba to „12,345.6”, a dla "de-DE" „12.345,6”.
Drugi argument to obiekt opcji, taki sam jak w Intl.NumberFormat. style: "currency" razem z currency: "PLN" formatuje kwoty, style: "percent" zamienia 0.25 na „25%”, a minimumFractionDigits i maximumFractionDigits ustalają liczbę miejsc po przecinku.
Pod spodem metoda za każdym razem korzysta z formatera Intl.NumberFormat. Przy pojedynczych liczbach nie ma to znaczenia, ale formatując setki wartości, np. w tabeli wyników, utwórz formater raz i wywołuj jego metodę format(). Zawsze podawaj kod języka, bo bez niego wynik zależy od ustawień przeglądarki użytkownika.
Składnia
#number.toLocaleString()
number.toLocaleString(locales)
number.toLocaleString(locales, options)Parametry
#locales
napis lub tablica, opcjonalny
Kod języka, np."pl-PL","en-US"albo"de-DE". Pominięty oznacza język przeglądarki.options
obiekt, opcjonalny
Ustawienia jak wIntl.NumberFormat, m.in.style,currency,minimumFractionDigitsimaximumFractionDigits.
Więcej przykładów
#const prices = [49, 1299.5, 15000]
for (const price of prices) {
console.log(price.toLocaleString('pl-PL', { style: 'currency', currency: 'PLN' }))
}W polskim zapisie liczby czterocyfrowe nie dostają separatora tysięcy, dlatego „1299,50 zł” jest zapisane bez spacji, a „15 000,00 zł” już z nią.
const average = 4.5
console.log(average.toLocaleString('pl-PL', { minimumFractionDigits: 2 }))
console.log((3.14159).toLocaleString('pl-PL', { maximumFractionDigits: 2 }))
console.log(average.toFixed(2))const format = new Intl.NumberFormat('pl-PL', { maximumFractionDigits: 1 })
const results = [81.66, 95, 70.25]
console.log(results.map((value) => format.format(value)))Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Wynik to tekst do wyświetlania. Nie licz na nim i nie zapisuj go w bazie: przechowuj surową liczbę, a formatuj ją dopiero przy pokazywaniu.
- Separatorem tysięcy w polskim zapisie jest spacja niełamiąca (
\u00a0), a nie zwykła. Porównując wynik w testach, uwzględnij ten znak. - Opcja
maximumFractionDigitszaokrągla liczbę tylko na potrzeby wyświetlenia, sama wartość się nie zmienia. W przeciwieństwie dotoFixed()dostajesz przy tym polski przecinek.
Powiązane hasła
#- Intl.NumberFormatFormatuje liczby zgodnie z zasadami danego języka: separatory, waluty, procenty i jednostki.
- Number.prototype.toFixed()Zamienia liczbę na napis z podaną liczbą miejsc po przecinku.
- Number.prototype.toString()Zamienia liczbę na napis, także w innym systemie liczbowym, np. dwójkowym lub szesnastkowym.
- Math.round()Zaokrągla liczbę do najbliższej liczby całkowitej.
Widzisz błąd albo brakuje przykładu? Napisz do nas.