代码一:    BigDecimal b = new BigDecimal("12.355").setScale(2,BigDecimal.ROUND_UP);
    System.out.println(b.floatValue());代码二:    BigDecimal b = new BigDecimal("12.355");
    b.setScale(2,BigDecimal.ROUND_UP);
    System.out.println(b.floatValue());
代码都一样、只是分开来写了、请问结果是一样吗?为什么、

解决方案 »

  1.   

    BigDecimal 的说明中,第一句话很重要:
    Immutable, arbitrary-precision signed decimal numbers.相信你已经当场恍然大悟了,哈哈~~~
      

  2.   

    BigDecimal 是不可变的、、、、
      

  3.   


    是因为  volatile transient 修饰的关系吧?E语是我心中永远的痛看来以后要多背单词了、
      

  4.   


    我觉得可能你想错方向了,你修改下代码,只需要增加2个字符即可:BigDecimal b = new BigDecimal("12.355");
    b = b.setScale(2,BigDecimal.ROUND_UP); // 就是增加 b=
    System.out.println(b.floatValue());
    然后再结合下 String 的特点考虑下。