While working with Doubles and Long numbers in Java you will see that most of the value are displayed in Exponential form. For example : In following we are multiplying 2.35 with 10000 and the result is printed.

```
//Division example
Double a = 2.85d / 10000;
System.out.println("1) " + a.doubleValue());
//Multiplication example
a = 2.85d * 100000000;
System.out.println("2) " + a.doubleValue());
```

**Result:**1) 2.85E-4 2) 2.85E8Thus you can see the result is printed in exponential format. Now you may want to display the result in pure decimal format like: 0.000285 or 285000000. You can do this simply by using class

`java.math.BigDecimal`

. In following example we are using `BigDecimal.valueOf()`

to convert the `Double`

value to `BigDecimal`

and than `.toPlainString()`

to convert it into plain decimal string.```
import java.math.BigDecimal;
//..
//..
//Division example
Double a = 2.85d / 10000;
System.out.println("1) " + BigDecimal.valueOf(a).toPlainString());
//Multiplication example
a = 2.85d * 100000000;
System.out.println("2) " + BigDecimal.valueOf(a).toPlainString());
```

**Result:**1) 0.000285 2) 285000000The only disadvantage of the above method is that it generates lonnnnggg strings of number. You may want to restrict the value and round off the number to 5 or 6 decimal point. For this you can use

`java.text.DecimalFormat`

class. In following example we are rounding off the number to 4 decimal point and printing the output.```
import java.text.DecimalFormat;
//..
//..
Double a = 2.85d / 10000;
DecimalFormat formatter = new DecimalFormat("0.0000");
System.out.println(formatter .format(a));
```

**Result:**0.0003Happy converting :)

Thanks…it helped me

Thanks dude.. it helped me too..

I dont want the result to be string, i need it as a number. How do i get this?

If i convert this string to number it again becomes exponential. Any help on this would be appreciated.

use BigDecimal.valueOf(a) . Its of BigDecimal Type.

It still fails when the number is 0.0000003.

thanks. i had made my own formula/arithmetic expression parser which was facing problems due to an inconsistent way java presents its results in double format; mostly the numbers remained in decimal form, but too small and too large results were returned in the exponential format. just using the BigDecimal whenever an a computation returned a result straightened out the bug for me.

Thanks a lot for the solution.

Saved my time. :)

Thanks for your example. It really helped a lot. Keep posting.

hi.. nice one… but if i have a value like 5.0 its a double value, i need to store again into another double variable in the format like 5.000, how it can be possible

DecimalFormat df=new DecimalFormat(“#.000”)

df.parse(yournumber)

Thanks a lot

Thanks a lot

doesnt work for the number -7.728382078632706e+19

please help