double转BigDecimal精度丢失的解决方案。
因为double有精度丢失的问题,所以关于小数点的计算通常使用BigDecimal来计算。 但直接调用BigDecimal的double构造函数,会出现精度丢失问题。
/**
* BigDecimal传double的构造函数
*/
public BigDecimal(double val) {
this(val,MathContext.UNLIMITED);
}
例子:
public class Demo1 {
public static void main(String[] args) {
//输出结果:4.79999999999999982236431605997495353221893310546875
System.out.println(new BigDecimal(4.8));
}
}
解决方案: 将double类型转为String类型就可以了。 调用的是BigDecimal的String构造函数。
public class Demo1 {
public static void main(String[] args) {
double d = 4.8;
//输出结果:4.79999999999999982236431605997495353221893310546875
System.out.println(new BigDecimal(d));
//输出结果:4.8
System.out.println(new BigDecimal(String.valueOf(d)));
}
}
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
最强 Pandas 学习神器来了
