BigDicimal类可以用于进行精确的数字运算,但是在创建一个小数对象时不能直接在构造方法里直接写入double数字
public static void main(String[] args){
double test = 0.1;
System.out.println(new BigDecimal(Double.toString(test)));//0.1
System out println(BigDecimal.valueOf(0.1));//0.1
//由于浮点数不是精确数字下面这个会得到
//0.1000000000000000055511151231257827021181583404541015625
System.out.println(new BigDecimal(0.1));//不是0.1
}
所以创建一个BigDecimal对象可以选择先转为String然后再填入构造器,有可以用这个类的静态方法valueOf来创建,从源码可以看出这个方法是一个用刚才所说的String填入构造器的封装;
public static BigDecimal valueOf(double val) {
// Reminder: a zero double returns '0.0', so we cannot fastpath
// to use the constant ZERO. This might be important enough to
// justify a factory approach, a cache, or a few private
// constants, later.
return new BigDecimal(Double.toString(val));
}
版权声明:本文为zjgyjd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。