How do I format a number in Java?

ScArcher2 picture ScArcher2 · Sep 8, 2008 · Viewed 298.7k times · Source

How do I format a number in Java?
What are the "Best Practices"?

Will I need to round a number before I format it?

32.302342342342343 => 32.30

.7323 => 0.73

etc.

Answer

Espo picture Espo · Sep 8, 2008

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

double r = 5.1234;
System.out.println(r); // r is 5.1234

int decimalPlaces = 2;
BigDecimal bd = new BigDecimal(r);

// setScale is immutable
bd = 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.