Class BigDecimalMath
java.lang.Object
com.google.common.math.BigDecimalMath
A class for arithmetic on
BigDecimal
that is not covered by its built-in methods.- Since:
- 30.0
- Author:
- Louis Wasserman
-
Method Summary
Modifier and TypeMethodDescriptionstatic double
roundToDouble
(BigDecimal x, RoundingMode mode) Returnsx
, rounded to adouble
with the specified rounding mode.
-
Method Details
-
roundToDouble
Returnsx
, rounded to adouble
with the specified rounding mode. Ifx
is precisely representable as adouble
, itsdouble
value will be returned; otherwise, the rounding will choose between the two nearest representable values withmode
.For the case of
RoundingMode.HALF_DOWN
,HALF_UP
, andHALF_EVEN
, infinitedouble
values are considered infinitely far away. For example, 2^2000 is not representable as a double, butroundToDouble(BigDecimal.valueOf(2).pow(2000), HALF_UP)
will returnDouble.MAX_VALUE
, notDouble.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:
ArithmeticException
- ifmode
isRoundingMode.UNNECESSARY
andx
is not precisely representable as adouble
- Since:
- 30.0
-