Table of Contents
In this post, we will see how to format a number using DecimalFormat in java.
DecimalFormat
DecimalFormat class is subclass of NumberFormat class and it is used to format numbers by using specify formatting pattern.We can format a number upto 2 decimal place,upto 3 decimal place, using comma to separate digits.
Creating DecimalFormat object
1 2 3 4 |
String pattern="###,###.00"; DecimalFormat df=new DecimalFormat(pattern); |
The string(i.e pattern) we pass in DecimalFormat constructor specify format for the number.
DecimalFormat’s format method can be used to format a number.Once we create object of DecimalFormat object, we can call format method and pass the number as parameter.
1 2 3 |
String number=df.format(123456789.123); |
Few  Number Format pattern are:
Symbol | Meaning |
---|---|
0 | It always displayed 0,if number has less digit |
# | A digit,leading zeros are ommitted and displayed fixed digit |
. | Marks decimal separator. |
, | Marks grouping separator. |
Below examples will help you understand better.
Pattern | Number | Formatted String |
---|---|---|
00.## | 8.567 | Â 08.56 |
###,###.## | 987654.56 | 987654.56 |
###.000 | 12345.84 | 12345.84 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package org.arpit.java2blog; import java.text.DecimalFormat; //import package public class DecimalFormatExample { public static void main(String args[]) { //formatting number upto 2 decimal places String pattern1="###,###.00"; // pattern according to which number will be formatted DecimalFormat df=new DecimalFormat(pattern1); //object creation and initialized with string System.out.println(df.format(987654341.9)); //pass number to format method for formatting System.out.println(df.format(7654341.987)); //formatting upto 3 decimal places String pattern2="#,###.000"; df=new DecimalFormat(pattern2); System.out.println(df.format(100000098)); System.out.println(df.format(10000000.98)); System.out.println(df.format(10000000.98789)); } } When you run above program, you will get below output |
Output
7,654,341.99
1,000,000,980.000
10,000,000.980
10,000,000.987
In our above example, when we format upto 2 decimal place then number having more than two digits after decimal will print only two digits and in upto 3 decimal place will print upto only 3 digits if less than three digits are there than it will placed zero in the end.
Grouping the digits
You can group the digits starting from decimal by using method setGroupSize() on DecimalFormat object.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package org.arpit.java2blog; import java.text.DecimalFormat; //import package public class DecimalFormatExample { public static void main(String args[]) { //formatting number upto 2 decimal places String pattern1="###,###.00"; // pattern according to which number will be format DecimalFormat df=new DecimalFormat(pattern1); //object creation and initialized with string df.setGroupingSize(4); System.out.println(df.format(987654341.9)); //pass number to format method for formatting } } |
When you run above program, you will get below output
Please note that DecimalFormat is not thread safe means in multithreading environment don’t use DecimaFormat.
That’s all about DecimalFormat in java.