在使用Double计算数值时,经常会遇见精度缺失的问题,例如
@Test
public void testDouble() {
Double a = Double.valueOf(0.05);
BigDecimal bd = new BigDecimal(a);
String s = bd.toPlainString();
System.out.println(s);
}
结果打印出
0.05000000000000000277555756156289135105907917022705078125
解决方式:
将Double转成String类型,在传入BigDecimal的构造方法
@Test
public void testDouble2() {
Double a = Double.valueOf(0.05);
BigDecimal bd = new BigDecimal(a.toString());
System.out.println(bd.toPlainString());
}
结果打印出
0.05