用这个java.math.BigDecimal吧
要多准确有多准确

解决方案 »

  1.   

    java.math.BigDecimal该怎么用呢?总不能直接用double去构造吧
      

  2.   

    java.math.BigDecimal big = new BigDecimal("1000.111111111111111111111");
        for (int i = 0; i < 10; i++) {
          System.out.println(big.setScale(i, big.ROUND_HALF_UP));
        }
    你运行一下
    就知道BigDecimal有多么好用了
      

  3.   

    float或double由他们的存储方式决定了以上现象,想用他们来做比较或者处理的时候要指定精度
      

  4.   

    float与double是用2进制的密指来表达任意一个数,
    对于表达不了的,只好取近似,
    因此,精度不会保证。Java里也建议只有比例等数值才用float与double,对于钱等精确表达的,用BigDecimal。