How do I format a number in Java? How do I format a number in Java? java java

How do I format a number in Java?


From this thread, there are different ways to do this:

double r = 5.1234;System.out.println(r); // r is 5.1234int decimalPlaces = 2;BigDecimal bd = new BigDecimal(r);// setScale is immutablebd = bd.setScale(decimalPlaces, BigDecimal.ROUND_HALF_UP);r = bd.doubleValue();System.out.println(r); // r is 5.12

f = (float) (Math.round(n*100.0f)/100.0f);

DecimalFormat df2 = new DecimalFormat( "#,###,###,##0.00" );double dd = 100.2397;double dd2dec = new Double(df2.format(dd)).doubleValue();// The value of dd2dec will be 100.24

The DecimalFormat() seems to be the most dynamic way to do it, and it is also very easy to understand when reading others code.


You and String.format() will be new best friends!

https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

 String.format("%.2f", (double)value);


Be aware that classes that descend from NumberFormat (and most other Format descendants) are not synchronized. It is a common (but dangerous) practice to create format objects and store them in static variables in a util class. In practice, it will pretty much always work until it starts experiencing significant load.