为什么使用add2方法的结果是错误的?Double.toString(d1)为什么能保持double的精度不丢失? public static double add(double d1, double d2) { BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.add(bd2).doubleValue(); } public static double add2(double d1, double d2) { BigDecimal bd1 = new BigDecimal(d1); BigDecimal bd2 = new BigDecimal(d2); return bd1.add(bd2).doubleValue(); } public static void main(String[] args) { double d1 = 1.0000002; double d2 = 0.0000002; System.out.println(Double.toString(d1)); System.out.println("d1 + d2 = " + (d1 + d2)); // 1.0000003999999998 System.out.println("d1 + d2 = " + add(d1, d2)); // 1.0000004 System.out.println("d1 + d2 = " + add2(d1, d2)); // 1.0000003999999998 }PS:引出一个概念问题:double d = XXXX.XXXXXX;System.out.println(d); //这里总是不会丢失精度的,为什么?
添加回答
举报
0/150
提交
取消