String aa ="222222222.09";
String bb ="111111111.05";
BigDecimal ad= new BigDecimal(Double.valueOf(aa));
BigDecimal bd= new BigDecimal(Double.valueOf(bb));
System.out.println(ad.subtract(bd));
我想得到 111111111.04 的结果。
但是 现在 得到了。111111111.04000000655651092529296875
不知道 在哪添加参数呢。
------解决方案--------------------
String aa ="222222222.09";
String bb ="111111111.05";
BigDecimal ad= new BigDecimal(Double.valueOf(aa));
BigDecimal bd= new BigDecimal(Double.valueOf(bb));
System.out.println(ad.subtract(bd).setScale(2,BigDecimal.ROUND_HALF_UP));
------解决方案--------------------
String aa ="222222222.09";
String bb ="111111111.05";
BigDecimal ad= new BigDecimal(Double.valueOf(aa));// 这里String类型转成double类型,意义何在?
BigDecimal bd= new BigDecimal(Double.valueOf(bb));
System.out.println(ad.subtract(bd));
正确的做法是直接
BigDecimal ad= new BigDecimal(aa);
BigDecimal bd= new BigDecimal(bb);
创建BigDecimal对象的时候,一定要用String对象作为构造器参数啊,而不是Double类型。