Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I round a double to two decimal places in Java? [duplicate]

Tags:

java

double

This is what I did to round a double to 2 decimal places:

amount = roundTwoDecimals(amount);  public double roundTwoDecimals(double d) {     DecimalFormat twoDForm = new DecimalFormat("#.##");     return Double.valueOf(twoDForm.format(d)); } 

This works great if the amount = 25.3569 or something like that, but if the amount = 25.00 or the amount = 25.0, then I get 25.0! What I want is both rounding as well as formatting to 2 decimal places.

like image 818
sherry Avatar asked Apr 19 '11 00:04

sherry


2 Answers

Just use: (easy as pie)

double number = 651.5176515121351;  number = Math.round(number * 100); number = number/100; 

The output will be 651.52

like image 132
Kaspar Avatar answered Sep 23 '22 02:09

Kaspar


Are you working with money? Creating a String and then converting it back is pretty loopy.

Use BigDecimal. This has been discussed quite extensively. You should have a Money class and the amount should be a BigDecimal.

Even if you're not working with money, consider BigDecimal.

like image 32
Rob Avatar answered Sep 27 '22 02:09

Rob