java中可以将double类型转换为BigDecimal吗?
发布网友
发布时间:2022-05-04 23:48
我来回答
共3个回答
热心网友
时间:2022-05-18 00:16
可以啊,用BigDecimal的构造方法:new BigDecimal(double x)
热心网友
时间:2022-05-18 01:34
采纳答案这种方式 new BigDecimal() ,容易丢失精度,最好加上参数
double a = 4.1625;
System.out.println(new BigDecimal(a));
// 打印输出4.1624999999999996447286321199499070644378662109375
// 如果小数点后面第四位做四舍五入就会出现错误
//可以加参数解决
System.out.println(new BigDecimal(a,MathContext.DECIMAL32));
// 打印输出4.162500
// MathContext类 详细可参见java API
热心网友
时间:2022-05-18 03:09
public class Test {
public static void main(String args[]) {
double b_OLD = 4.1625;
java.math.BigDecimal bd1 = new java.math.BigDecimal( b_OLD );
System.out.println("BEFORE ROUNDING: " + bd1);
}
}
可以用double类型初始化BigDecimal类。追问那为什么
double b = 4.44;
java.math.BigDecimal big = (java.math.BigDecimal )b;
这样不能转换呢? 有什么区别吗?
追答因为double是基本数据类型,不可以强制类型转换的。强制类型转换是针对Object的。Double b = 4.44; 这样也是不行的,因为BigDecimal没有从Double继承,所以没有办法强制类型转换。