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 学习神器来了