public static void main(String[] args) {
System.out.println(0.1+0.2);
BigDecimal bigDecimal=new BigDecimal(0.1+"");
BigDecimal bigDecimal2=new BigDecimal(0.2+"");
BigDecimal add = bigDecimal.add(bigDecimal2);
double doubleValue = add.doubleValue();
System.out.println(doubleValue);
}
打印结果:
0.30000000000000004
0.3
原因:java采用IEEE754标准,在将十进制 0.1 ,0.2转二进制时,无法准确表达,导致精度丢失,建议将浮点型先转String 在初始化为BigDecimal 类型进行运算(直接使用double 初始化BigDecimal ,也会丢失精度)。