推荐用法:
public static void main(String[] args) {
double d1 = 1;
double d2 = 20.2;
double d3 = 300.03;
double d4 = d1 + d2 +d3;
System.out.println("double结果:"+ d4); //321.22999999999996
System.out.print("===================\n");
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
BigDecimal b3 = new BigDecimal(Double.toString(d3));
b2=b1.add(b2).add(b3);
System.out.println("BigDecimal结果:"+b2); //321.23
}
1.比较浮点数相等:两者之差小于10E-6
2.new BigDecimal(Double d);不可靠,也会造成精度丢失
参考博客: