Witam !
Mam taki problem… nie jestem zbyt dobry z matematyki, a chciałbym stworzyć skrypt w JS, który formatowałby liczby jak w PHP funkcja number_format() .
Zrobiłem coś takiego, ale to nie jest zbyt oryginalny skrypt i w dodatku dość rozbudowane… dużo niepotrzebnego kodu tutaj zapewne:
function formatLiczba(liczba, rozdzielnik) {
liczba = new String(liczba);
if (liczba.length < 4) {
return liczba;
}
else if (liczba.length < 7) {
liczbaK = liczba.slice(0, liczba.length-3);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-3, liczba.length);
return liczbaK;
}
else if (liczba.length < 10) {
liczbaK = liczba.slice(0, liczba.length-6);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-6, liczba.length-3);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-3, liczba.length);
return liczbaK;
}
else if (liczba.length < 13) {
liczbaK = liczba.slice(0, liczba.length-9);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-9, liczba.length-6);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-6, liczba.length-3);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-3, liczba.length);
return liczbaK;
}
else if (liczba.length < 16) {
liczbaK = liczba.slice(0, liczba.length-12);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-12, liczba.length-9);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-9, liczba.length-6);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-6, liczba.length-3);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-3, liczba.length);
return liczbaK;
}
else if (liczba.length < 19) {
liczbaK = liczba.slice(0, liczba.length-15);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-15, liczba.length-12);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-12, liczba.length-9);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-9, liczba.length-6);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-6, liczba.length-3);
liczbaK += rozdzielnik;
liczbaK += liczba.slice(liczba.length-3, liczba.length);
return liczbaK;
}
else {
return liczba;
}
}
Przykład mojego skryptu: - przykładowy kod korzystający z powyższej funkcji:
document.write(formatLiczba(200000000, "."))
-
wynik zastosowanego powyżej przykładu:
200.000.000
Tak więc, jak widać… skrypt spełnia z reguły moje oczekiwania, jednak… wiem, że idzie to napisać prościej i wygodniej. Po drugie stworzona przeze mnie funkcja ma ograniczenie do liczb z maksymalnie 18 liczb…
Pomoże ktoś? Z góry dziękuję.