public class BigDecimalMath
extends java.lang.Object
BigDecimal that is not covered by its built-in methods.| Modifier and Type | Class and Description |
|---|---|
private static class |
BigDecimalMath.BigDecimalToDoubleRounder |
| Modifier | Constructor and Description |
|---|---|
private |
BigDecimalMath() |
| Modifier and Type | Method and Description |
|---|---|
static double |
roundToDouble(java.math.BigDecimal x,
java.math.RoundingMode mode)
Returns
x, rounded to a double with the specified rounding mode. |
public static double roundToDouble(java.math.BigDecimal x,
java.math.RoundingMode mode)
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.)
java.lang.ArithmeticException - if mode is RoundingMode.UNNECESSARY and x
is not precisely representable as a double