## Class BigDecimalMath

• java.lang.Object

• ```@GwtIncompatible
public class BigDecimalMath
extends java.lang.Object```
A class for arithmetic on `BigDecimal` that is not covered by its built-in methods.
Since:
30.0
Author:
Louis Wasserman
• ### Method Summary

All Methods
Modifier and Type Method Description
`static double` ```roundToDouble​(java.math.BigDecimal x, java.math.RoundingMode mode)```
Returns `x`, rounded to a `double` with the specified rounding mode.
• ### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Method Detail

• #### roundToDouble

```public static double roundToDouble​(java.math.BigDecimal x,
java.math.RoundingMode mode)```
Returns `x`, rounded to a `double` with the specified rounding mode. If `x` is precisely representable as a `double`, its `double` value will be returned; otherwise, the rounding will choose between the two nearest representable values with ``` mode```.

For the case of `RoundingMode.HALF_DOWN`, `HALF_UP`, and `HALF_EVEN`, infinite `double` values are considered infinitely far away. For example, 2^2000 is not representable as a double, but `roundToDouble(BigDecimal.valueOf(2).pow(2000), HALF_UP)` will return `Double.MAX_VALUE`, not `Double.POSITIVE_INFINITY`.

For the case of `RoundingMode.HALF_EVEN`, this implementation uses the IEEE 754 default rounding mode: if the two nearest representable values are equally near, the one with the least significant bit zero is chosen. (In such cases, both of the nearest representable values are even integers; this method returns the one that is a multiple of a greater power of two.)

Throws:
`java.lang.ArithmeticException` - if `mode` is `RoundingMode.UNNECESSARY` and `x` is not precisely representable as a `double`
Since:
30.0