Let's say I want to print the number 100000000. At first sight it is difficult to tell how many millions this number is representing. Is it 10 million or 100 million? How can I make big numbers in Java look more readable? Something like this for instance would be great: 100 000 000
. You can tell right away that the number is 100 million.

- 714
- 4
- 15
- 26
-
You can use underscore for big number. – Masudul Apr 21 '15 at 17:06
-
@Masud OP wants to add white spaces when printing the number, not in the source code – Turing85 Apr 21 '15 at 17:07
-
5https://docs.oracle.com/javase/tutorial/java/data/numberformat.html – bobwah Apr 21 '15 at 17:08
-
@Turing85, He asked a question like `how can I make big numbers in Java look more readable?` – Masudul Apr 21 '15 at 17:09
-
First line of my post: `Let's say I want to print the number 100000000. ` – Sing Sandibar Apr 21 '15 at 17:11
7 Answers
You can also try DecimalFormat;
DecimalFormat formatter = new DecimalFormat("#,###");
System.out.println(formatter.format(100000));
Results:
1000>>1,000
10000>>10,000
100000>>100,000
1000000>>1,000,000

- 10,119
- 5
- 43
- 46
You can try like this:
String.format("%.2fM", yourNumber/ 1000000.0);
This will display the numbers in the format
1,000,000 => 1.00M
1,234,567 => 1.23M
EDIT:-
I know its a late edit but yes there is one more way:
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;
}
Call this function and you will get the output as follows:
201700 = 202k
3000000 = 3m
8800000 = 8.8m

- 168,305
- 31
- 280
- 331
Use the DecimalFormat class, see the link for how to use.
To save you searching I have written what you basically need
DecimalFormat myFormatter = new DecimalFormat("### ### ###");
String output = myFormatter.format(value);
System.out.println(output);

- 850
- 7
- 7
You can use decimal format to format the string
DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
System.out.println(decimalFormat.format(100000000));
This will print 100,000,000
For other input - say 1000 it would print 1,000

- 350
- 2
- 18
Using a DecimalFormat, as already suggested, is almost everything you need. To get the exact result that you asked for, say space-separated thousand's and so on, you need to combine it with DecimalFormatSymbols, like:
DecimalFormatSymbols customSymbols = DecimalFormatSymbols.getInstance(Locale.US);
customSymbols.setGroupingSeparator(' ');
new DecimalFormat("#,###;-#,###", customSymbols).format(value);
; semicolon in "#,###;-#,###" separates positive from negative numbers (which must be defined separately, or you will end up with all converted to be positive!)
, colon points a place to separate number (each 3 digits in this example).
For instance, for
value=12345678
the output would be
12 345 678

- 21
- 3
You will probably just want to use a string for this. If you need to do some calculations simply keep it as an int until it needs to be printed. Then when it needs to be printed convert it to a string, process the string so that its as readable as you would like, and print it.

- 1,788
- 1
- 18
- 28
how about below approach, but it's supported in Java 7 and later versions:
int twoMillion = 2_000_000;

- 10,309
- 6
- 39
- 55