0

I have a decimal value 46.58 i want it to be like 46.60 or for 46.44 it will be like 46.40. Tried several ways like like Math class's round function and Bigdecimal but it is not roudning off after decimal values.

BigDecimal bigDecimal = new BigDecimal(value);
bigDecimal = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
value = bigDecimal.doubleValue();
double value = Math.round(decimalValue);
Dumidu Udayanga
  • 864
  • 2
  • 9
  • 21

2 Answers2

3

You first need to round to 1 decimal place using standard half-up RoundingMode and afterwards increase the scale to 2 again:

BigDecimal bigDecimal = new BigDecimal("46.58");
bigDecimal = bigDecimal.setScale(1, RoundingMode.HALF_UP); // bigDecimal == 46.6
bigDecimal = bigDecimal.setScale(2, RoundingMode.UNNECESSARY); // bigDecimal == 46.60
dpr
  • 10,591
  • 3
  • 41
  • 71
0

below solution worked for me.

    BigDecimal bigDecimal = new BigDecimal("46.58");
    bigDecimal = bigDecimal.setScale(1, RoundingMode.HALF_UP); 
    bigDecimal = bigDecimal.setScale(2, RoundingMode.UNNECESSARY); 
    double d = bigDecimal.doubleValue();
    String valstr = String.format("%.2f%n", d);
    System.out.println(valstr);