Translates a  double into a  BigDecimal which
 is the exact decimal representation of the  double's
 binary floating-point value.  The scale of the returned
  BigDecimal is the smallest value such that
 (10scale × val) is an integer.
 
Notes:
 new BigDecimal(0.1) in
 Java creates a  BigDecimal which is exactly equal to
 0.1 (an unscaled value of 1, with a scale of 1), but it is
 actually equal to
 0.1000000000000000055511151231257827021181583404541015625.
 This is because 0.1 cannot be represented exactly as a
  double (or, for that matter, as a binary fraction of
 any finite length).  Thus, the value that is being passed
 in to the constructor is not exactly equal to 0.1,
 appearances notwithstanding.
  String constructor, on the other hand, is
 perfectly predictable: writing  new BigDecimal("0.1")
 creates a  BigDecimal which is exactly equal to
 0.1, as one would expect.  Therefore, it is generally
 recommended that the BigDecimal(String) be used in preference to this one.
  double must be used as a source for a
  BigDecimal, note that this constructor provides an
 exact conversion; it does not give the same result as
 converting the  double to a  String using the
 Double.toString(double) method and then using the
 BigDecimal(String) constructor.  To get that result,
 use the  static valueOf(double) method.
 
| val |  doublevalue to be converted to BigDecimal. | 
| NumberFormatException | if  valis infinite or NaN. | 
Diagram: BigInteger, BigDecimal