最近由于系统中用到mysql的 round函数进行计算。
因为觉得用数据库来做计算是不太划算的事,所以就转成php来做运算了.
结果却发现php 和 mysql round出来的结果居然不一样.
举个例子:
round((32256/36864)*100) 这样一个数字 直接在mysql 和 php 运行结果都是一样的..为 88
但是 当里面的数字 用 float型字段代替做运算时..诡异的事情发生了..mysql 得到结果为87 而php 依然为88.
用计算器计算能很容易得到结果87.5 按照四舍五入 结果应该是88.
但为什么mysql 会得出87的结果呢..
主要是浮点数进行运算时精度的问题.. mysql 最后计算的结果可能是87.499999999999...那么当你四舍五入的时候得到的结果必然是87.
有一个临时解决方案是可以round 2次...先按照小数点后一位 round 然后再round 一次..一般就不会有问题了..
这个问题主要是计算机在进行浮点运算时取的精度不同导致的..