Forums Register Login

BigDecimal

+Pie Number of slices to send: Send
I have to retain the exact value of a Double and convert it into a string.

Double value = 105312453566.35363465;

I tried doing a toString() on the above Double value... but it returns me an output 1.0531245356635364E11



Hence I tried converting it into a BigDecimal format using the below code... so that I can retain the exact value..

BigDecimal newValue = new BigDecimal(value);
System.out.println("BigDecimal Value: " + newValue);

But the output which I get is like this :

BigDecimal Value: 105312453566.3536376953125

which is again not what I want.


How can I get the exact value?
+Pie Number of slices to send: Send
That number has 20 digits, and doubles simply do not have that much accuracy. Around 16 digits is the most number of accurate digits that's possible. See #20 in the http://faq.javaranch.com/java/JavaBeginnersFaq for some background information.

The solution to your problem is to use the BigDecimal(String) constructor. It retains all digits of its parameter.
+Pie Number of slices to send: Send
I agree with Ulf.
An another approach is to multiply the double value for a number (like 1000) that makes the double an int.
+Pie Number of slices to send: Send
An int has even less precision than a double (around 10 digits), and a long has around 19, so neither of those would work in this case.
ice is for people that are not already cool. Chill with this tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 1534 times.
Similar Threads
Trouble with BigDecimal and Double
What actual Double.toString(double d) does?
query about double addition
Convert String to BigDecimal
regarding bigdecimal.divide problem
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 28, 2024 14:51:37.