是这样的,在java里double和float都是用2进制保存的,所以一些分数不能正确的保存下来,比如输入0。01,却显示0。00998。

解决方案 »

  1.   

    float r=0.01f;
    float t=3.078f;
    y=t+r;
    System.out.println(y);
    我的正常。不知你的怎么回事
      

  2.   

    to zzj981914
    谢谢你的解答,我想也应该是这样的,
    但是如果要精确到某位,怎么解决呢?
    是不是采用四舍五入的方法?to zmpcoming
    大部分时候是正常的,由于是从计费系统返回的数据,
    所以有时候会出现0.01显示成0.00998这种情况
      

  3.   

    要想保持精度,就只能用BigDecimal
      

  4.   

    float r=0.01f;
    float t=0.798f;
    y=t+r;
    System.out.println(y);
    就不一样了嘛!