[Sanjaya]First of all value 1.6666666666666666666 fits in double.
Not really. A double cannot store 20 significant digits. If you store it in a double, it'll be rounded to fewer significant digits.
[B][Sanjaya]Third, how to use BigDecimal:
If you do this, the parameter value will be treated as a double and will be rounded for the reason stated above. To create a BigDecimal with more signficant digits than can fit in a double, you'll need to use one of the other constructors.
Also, bd.doubleValue() returns a double. Assuming you get the BigDecimal created with the full 20 digits and then call doubleValue(), you'll encounter same problem -- the value will be rounded to fit into a double. To print the BigDecimal, use the toString() method instead:
[ October 26, 2006: Message edited by: Scott Johnson ]