Załóżmy, że chcę wydrukować numer 100000000. Na pierwszy rzut oka trudno jest stwierdzić, ile milionów reprezentuje ta liczba. Czy to 10 milionów czy 100 milionów? Jak sprawić, by duże liczby w Javie wyglądały na bardziej czytelne? Coś takiego na przykład byłoby wspaniałe: 100 000 000
. Od razu możesz stwierdzić, że liczba ta wynosi 100 milionów.Jak dodać pustą przestrzeń wewnątrz int?
Odpowiedz
Możesz także spróbować DecimalFormat;
DecimalFormat formatter = new DecimalFormat("#,###");
System.out.println(formatter.format(100000));
Wyniki:
1000>>1,000
10000>>10,000
100000>>100,000
1000000>>1,000,000
Najprawdopodobniej po prostu chcesz użyć do tego ciągu. Jeśli chcesz wykonać pewne obliczenia, po prostu zachowaj je jako int, dopóki nie zostanie wydrukowane. Następnie, kiedy trzeba go wydrukować, przekonwertuj go na ciąg, przetwórz ciąg tak, aby był czytelny, jak chcesz, i wydrukuj go.
Możesz spróbować tak:
String.format("%.2fM", yourNumber/ 1000000.0);
To spowoduje wyświetlenie liczby w formacie
1,000,000 => 1.00M
1,234,567 => 1.23M
EDIT: -
Wiem, że późno zmienił jednak tak nie to jeszcze jeden sposób:
private static String[] suff = new String[]{"","k", "m", "b", "t"};
private static int MAX_LENGTH = 4;
private static String numberFormat(double d) {
String str = new DecimalFormat("##0E0").format(d);
str = str.replaceAll("E[0-9]", suff[Character.getNumericValue(str.charAt(str.length() - 1))/3]);
while(str.length() > MAX_LENGTH || str.matches("[0-9]+\\.[a-z]")){
str = str.substring(0, str.length()-2) + str.substring(str.length() - 1);
}
return str;
}
wywołać tę funkcję, a dostaniesz wyjście następująco:
201700 = 202k
3000000 = 3m
8800000 = 8.8m
Można użyć formatu dziesiętnego do formatowania String
DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
System.out.println(decimalFormat.format(100000000));
To wydrukować 100.000.000
Na drugie wejście - powiedzmy 1000 byłoby wydrukowanie 1000
Skorzystaj z klasy DecimalFormat, zobacz link, aby dowiedzieć się, jak używać.
Aby zapisać może szukają Pisałem to, co w zasadzie trzeba
DecimalFormat myFormatter = new DecimalFormat("### ### ###");
String output = myFormatter.format(value);
System.out.println(output);
jak o poniżej podejścia, ale it's supported w Java 7 i późniejszych wersjach:
int twoMillion = 2_000_000;
Możesz użyć podkreślenia dla dużej liczby. – Masudul
@Masud OP chce dodać białe spacje podczas drukowania numeru, a nie w kodzie źródłowym – Turing85
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html – bobwah