How to Convert BigDecimal to Double or Double to BigDecimal in java with examples
- Admin
- Aug 17, 2023
- Java-examples
BigDecimal is a big integer with arbitrary-precision signed decimal numbers.
It contains a 32-bit integer and an unscaled decimal value. It is defined in java. math class. It is used in product prices and scientific calculations
Double is used to store floating-point numbers and uses 64 bytes.

This tutorial shows you how to convert BigDecimal to double in java.
Note: If you are using currency values BigDecimal and converting to double, You lose precision and It gives wrong results in currency processing.
You can also check my previous posts on the BigInteger
class in java.
- BigInteger Class tutorials
- Convert BigInteger to/from BigDecimal
- Convert BigDecimal to/from String
- BigInteger Divide example
- BigInteger Multiplication example
- Convert BigDecimal to float
- Top 10 BigInteger Examples
- Rounding bigdecimal to 2 decimal places
- Check BigDecimal contains Zero or not
- Convert BigInteger to/from ByteArray
How to convert bigdecimal to double
BigDecimal
has a method doubleValue
that returns the double value.
It returns Double.NEGATIVE_INFINITY
or Double.POSITIVE_INFINITY
based on how big is value in BigDecimal.
Here is a syntax
public double doubleValue()
Here is an example program code
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal order = new BigDecimal(123.56789);
System.out.println(order); //567890000000005557012627832591533660888671875
System.out.println(order.getClass()); // class java.lang.BigDecimal
Double d = order.doubleValue();
System.out.println(d); //123.56789
System.out.println(d.getClass()); //class java.lang.Double
}
}
Output:
123.567890000000005557012627832591533660888671875
class java.math.BigDecimal
123.56789
class java.lang.Double
How to Convert Double to BigDecimal in java?
This section shows you ways to convert double to BigDecimal in java We can do it in two ways
-
BigDecimal Constructor: The constructor accepts Double values and returns BigDecimal Object.
public BigDecimal(double value)
-
valueOf method: The static method takes the double value and returns BigDecimal Object.
public static BigDecimal valueOf(double val)
Here is a complete program code
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
Double d = 123.56789;
System.out.println(d); //123.56789
System.out.println(d.getClass()); //class java.lang.Double
// using constructor
BigDecimal order = new BigDecimal(d);
System.out.println(order); //123.67890000000005557012627832591533660888671875
System.out.println(order.getClass()); //class java.lang.BigDecimal
// using valueOf method
BigDecimal order1 = BigDecimal.valueOf(d);
System.out.println(order1); //123.56789
System.out.println(order1.getClass()); //class java.lang.BigDecimal
}
}
Output:
123.56789
class java.lang.Double
123.567890000000005557012627832591533660888671875
class java.math.BigDecimal
123.56789
class java.math.BigDecimal
Summary
Learned multiple ways to Convert BigDecimal to or from double in java. Also, converting bigdecimal to double result loss of precision values and try to avoid in currency calculations.