I have a BigDecimal which value is 450.90, I want to round up to next hole integer value, and then print the Integer value without any decimal points, like this;
Val: 450.90 -> Rounded: 451.00 -> Output: 451
Val: 100.00001 -> Rounded: 101.00000 Output: 101
Checked some solutions but I'm not getting the expected result, heres my code;
BigDecimal value = new BigDecimal(450.90); value.setScale(0, RoundingMode.HALF_UP); //Also tried with RoundingMode.UP return value.intValue();
Thanks!
math. BigDecimal. round(MathContext m) is an inbuilt method in Java that returns a BigDecimal value rounded according to the MathContext settings. If the precision setting is 0 then no rounding takes place.
intValue()converts this BigDecimal to an int. This conversion is analogous to the narrowing primitive conversion from double to short. Any fractional part of this BigDecimal will be discarded, and if the resulting "BigInteger" is too big to fit in an int, only the low-order 32 bits are returned.
The java. math. BigDecimal. intValue() is an in-built function which converts this BigDecimal to an integer value.
use the Math. ceil() function. The method ceil gives the smallest integer that is greater than or equal to the argument.
setScale
returns a new BigDecimal
with the result, it doesn't change the instance you call it on. So assign the return value back to value
:
value = value.setScale(0, RoundingMode.UP);
Live Example
I also changed it to RoundingMode.UP
because you said you always wanted to round up. But depending on your needs, you might want RoundingMode.CEILING
instead; it depends on what you want -451.2
to become (-452
[UP
] or -451
[CEILING
]). See RoundingMode
for more.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With