double a = 0.1;
double b = 0.2;
double c = 0.3;
System.out.println(a+b==c);//false
System.out.println(a*b);//0.020000000000000004;
BigDecimal d = new BigDecimal(0.1);
BigDecimal e =new BigDecimal(0.2);
BigDecimal f =new BigDecimal(0.3);
System.out.println((d.add(e)).compareTo(f));//1 1大于 0 等于 -1 小于
System.out.println(d.multiply(e));//0.02000000000000000222044....
// 如上可见我们可以看到double BigDecimal 精度问题,可通过BigDecimal.valueOf()方法来避免精度问题
BigDecimal g = BigDecimal.valueOf(0.1);
BigDecimal h =BigDecimal.valueOf(0.2);
BigDecimal i =BigDecimal.valueOf(0.3);
System.out.println((g.add(h)).compareTo(i));//0 1大于 0 等于 -1 小于
System.out.println(g.multiply(i));//0.03
double bigDeciaml 精度问题 及解决
最新推荐文章于 2022-04-23 23:35:46 发布