BigDecimal是一个具有任意精度的有符号十进制数字的大整数。
它包含一个32位的整数和一个未标定的十进制值。它被定义在java.math类中。它被用于产品价格和科学计算。
Double用于存储浮点数,使用64字节。
本教程告诉你如何在java中把BigDecimal转换为double。
注意:如果你使用货币值BigDecimal并将其转换为double,你将失去精度,并在货币处理中产生错误的结果。你也可以查看我以前关于java中BigInteger
类的文章。
如何将bigdecimal转换为double
BigDecimal有一个方法doubleValue
,用来返回双倍值。
它根据BigDecimal的值的大小,返回Double.NEGATIVE_INFINITY或Double.POSITIVE_INFINITY。
下面是一个语法 markup public doubleValue()
Here is an example program code
```java
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
}
}
输出
123.567890000000005557012627832591533660888671875
class java.math.BigDecimal
123.56789
class java.lang.Double
如何在java中把double转换为BigDecimal?
本节向你展示了在java中把双数转换成大十进制的方法,我们可以通过两种方式来实现:
-
BigDecimal构造函数。该构造函数接受Double值并返回BigDecimal对象。
public BigDecimal(double value)
-
valueOf方法。这个静态方法接受双倍数的值,并返回BigDecimal对象。
public static BigDecimal valueOf(double val)
下面是一个完整的程序代码
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
}
}
输出
123.56789
class java.lang.Double
123.567890000000005557012627832591533660888671875
class java.math.BigDecimal
123.56789
class java.math.BigDecimal
总结
学习了在java中把大十进制转换为双数的多种方法。另外,将bigdecimal转换为double会导致精确值的损失,在货币计算中要尽量避免。