double和float本来就不是精确的;你换几个数试试,0.003,0.005,0.007什么的试试;

解决方案 »

  1.   

    原因就是在Java中小数无法用二进制精确表示。就像十进制无法精确表示1/3是一个道理。
    说白了在Java中什么乱七八糟的计算你如果想要精确值,就不要用float/double,要用BigDecimal/BigInteger。
      

  2.   

    Double和Float是浮点数,浮点数是不精确的!结果又误差很正常!