Literal decimal floating-point numbers cannot always be precisely represented as an IEEE 754 floating-point value. Consequently, the BigDecimal(double val)
constructor must not be passed a floating-point literal as an argument when doing so results in an unacceptable loss of precision.
...