一个 是25.895,一个是20.00
2个金额相减想得到 5.90元,不想得到5.89各位怎么弄 谢谢了
BigDecimal b1 = new BigDecimal(25.895 -20.00).setScale(2,BigDecimal.ROUND_HALF_UP);

System.out.println(b1.doubleValue());

解决方案 »

  1.   

    new BigDecimal("25.895").subtract(new BigDecimal("20.00")).setScale(2,BigDecimal.ROUND_HALF_UP)
      

  2.   


    BigDecimal b1 = new BigDecimal(25.895 - 20.00+"").setScale(2,
    BigDecimal.ROUND_HALF_UP);
    System.out.println(b1.doubleValue());这样也可以,不知道为什么。
      

  3.   

    问题不在BigDecimal,
    问题在当你用BigDecimal(double)构造方法时,double本身是不精确的
    用BigDecimal(String)则肯定是精确的
    如这样就不会有问题:
    BigDecimal    b1 = new BigDecimal("5.895").setScale(2,BigDecimal.ROUND_HALF_UP);