日期:2014-05-20  浏览次数:20577 次

BigDecimal 的使用

    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类型。