Converting BigDecimal to Integer
Convert BigDecimal
to Integer
via intValue()
for straightforward truncation:
Rounding can be performed by applying setScale(0, RoundingMode)
before intValue()
:
Beware: Surpassing the limits of Integer
throws an ArithmeticException
. Peekaboo with Integer.MAX_VALUE
not advised!
Precision or truncation: Pick a side
When exact conversion is needed and you're a stickler for precision, use intValueExact()
- will throw an exception if any fractional info goes bye-bye:
Java's autoboxing tango shows us it can convert int
to Integer
without breaking a sweat:
Keeping the borders intact
Before you put the BigDecimal
into an Integer
, check if it fits in the box. In other words, ensure it's in Integer
's field of PLAY – else, ArithmeticException sitting in the corner might jump you:
Explicit instruction to Java to box comes in the form of Integer.valueOf()
:
All the Java flavors and rounding modes
Yes, older Java had no intValueExact()
for rounding. It went downhill for it with setScale()
:
Java 8 traded up with BigInteger
for exact rounding.
Traversing through possibilities
Edge cases of BigDecimal values severely larger than int
demand robust exception handling:
Choosing between intValue()
and intValueExact()
is like choosing between walking on a tightrope or a highway - one provides no room for missteps:
Ensure your BigDecimal thinks small (within Integer.MAX_VALUE
) before you pack it into an int:
In the nuttiest of shells - always test your conversions, remember biggies might change sign after conversion, and fractional parts could walk out, altogether.
It's all about the visual
Let's see visual aid for converting a BigDecimal
to an Integer
, representing these as a balloon and a bullseye respectively:
The process of landing:
Final Outcome
The visual:
A Jewelers' Guide on the Subject
- BigDecimal (Java Platform SE 8) - Oracle laid out everything on
BigDecimal
. - The Numbers Classes - the Oracle again, this time showing how to make numbers work for you in Java.
- java.math.BigDecimal#intValue - Program Creek, showing code examples of BigDecimal to Integer conversion.
- BigDecimal Class in Java - GeeksforGeeks explaining the nooks and crannies of
BigDecimal
class. - Java division by zero doesn't throw an ArithmeticException - why? - A Stack Overflow convo, shedding light on BigDecimal's peculiarities.
Wrap Up
Pack new knowledge, smack the Vote button, and sail into the sunset 🌅 Happy coding!👩💻
Was this article helpful?