I want to know if there is any advantage of using BigDecimal RoundingMode method over DoubleRounder.round().
Also I observe the differences in the result when I try to use the same precision in two methods. For Example :
Using DoubleRounder.round()
System.out.println("" DoubleRounder.round(0.0897435897435897, 5)); //gives 0.08974
Using BigDecimal RoundingMode
BigDecimal b= new BigDecimal(0.0897435897435897);
System.out.println("" b.round(new MathContext(5,RoundingMode.CEILING)); //gives 0.089744
I see that there are 6 digits in decimal places while using BigDecimal instead of 5. Can anyone explain me why this is happening. And in case I want to have exact 5 digit after decimal using BigDecimal, how do I need to modify this part of code?
CodePudding user response:
MathContext accept precision, it means starts from the leftmost nonzero digit.
you can use bigDecimal.setScale(5, RoundingMode.CEILING).
scale is the number of digits to the right of the decimal point.
e.g.
System.out.println(b.setScale(5, RoundingMode.CEILING)); // gives you 0.08975
CodePudding user response:
It will give you 5 digit
System.out.println("" b.round(new MathContext(4,RoundingMode.CEILING))); //gives 0.08975
