I have problems with rounding. In particular, after reading through all javadoc, I was expecting the following code:
int n = (integer between 0 and 9, included) new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
to return n + 0.56 . Instead, these are the return values ββfor n from 0 to 4 :
new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue() 0.56 new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_UP).doubleValue() 1.55 new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_UP).doubleValue() 2.56 new BigDecimal(3.555d).setScale(2, RoundingMode.HALF_UP).doubleValue() 3.56 new BigDecimal(4.555d).setScale(2, RoundingMode.HALF_UP).doubleValue() 4.55
I also tried changing the rounding mode:
int n = (integer between 0 and 9, included) new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
expecting n + 0.55 as a result for each n . Instead, the return values ββare exactly the same as in the previous example:
new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue() 0.56 new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue() 1.55 new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue() 2.56 new BigDecimal(3.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue() 3.56 new BigDecimal(4.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue() 4.55
Did I miss something?
source share