不要用float或者double存储,你用decimal存储,不会出现类似的问题。

解决方案 »

  1.   

    浮点数中有一部分数据本身就是近似存储的,有些浮点数,无法精确的用二进制表示,只能近似存储。
    所以 使用double参与计算的时候,是会有误差的存在。
    如果想精确存储和计算,推荐使用BigDecimal 类型。
      

  2.   

    赞同! 1.3显示为1.299999826   的原因是浮点数值采用二进制系统表示,而二进制中无法精确的表示分数1/10。如果在数值计算中不含有任何舍入误差,就应该使用BigDecimal 类
      

  3.   

    再前台和后台都使用BigDecimal类进行读取数据就可以了。
      

  4.   

    一般金额这样的字段都用BigDecimal存储的吧,包括bo里面定义也是用java.math.BigDecimal