直接相加的情况下,会出现精度丢失的问题,因此可以使用 BigDecimal ,如果是 double 的类型,依然会存在问题,所以推荐 3 4 5 写法
//1.直接相加
System.out.println(0.05 + 0.1);
//2.初始
BigDecimal a = new BigDecimal(0.05);
BigDecimal b = new BigDecimal(0.1);
System.out.println(a.add(b));
//3.字符串 【推荐】
BigDecimal c = new BigDecimal("0.05");
BigDecimal d = new BigDecimal("0.1");
System.out.println(c.add(d));
//4.使用valueOf 【推荐】 查看源码可知,valueOf 调用的是 Double.toString()
BigDecimal e = BigDecimal.valueOf(0.05);
BigDecimal f = BigDecimal.valueOf(0.1);
System.out.println(e.add(f));
//5.使用double.toString 【推荐】
BigDecimal g = new BigDecimal(Double.toString(0.05));
BigDecimal h = new BigDecimal(Double.toString(0.1));
System.out.println(g.add(h));
运行结果如图
valueOf 调用的是 Double.toString()