数据库表里有一个字段是float类型,现在的值是10.9
但是我通过sum函数查询出来
SELECT sum(score) FROM `szj_pro` WHERE id=112
结果显示的值是10.8999996185303,这是为什么呢?

解决方案 »

  1.   

    对于浮点数的加减(sum就是加了)有效的小数位与参与运算的数中小数位最少的相同
    如 10.9 + 0.23 结果 11.13 按此原则就是 11.1计算后可用 round 函数截取有小数位(他会做四舍五入)对于需要精确计算的小数的场合(比如金融),就不能使用浮点数了
    mysql 专门提供了 DECIMAL 类型来适应这种需求,当然运算速度要稍稍慢一点
      

  2.   

    该数据库用定点数decimal试试。或者直接round四射侮辱