圆形功能有时不能很好地工作。我在我的数据库中有这样一行:
field_1= 375
field_2= 0.65
field_3= 0.1
field_4= 11
所以我们知道:field_1 * field_2 * field_3 * field_4 = 268.125所以如果我把它舍入到2位小数 - > 268.13。
但是在mysql中我得到了268.12 - >从我的表中选择round(field_1 * field_2 * field_3 * field_4) - > 268.12
这种情况恰好发生在这些值上,我尝试了其他数字,并且没有问题,这一轮工作。
有关它的任何解决方法。我试过mysql 4.1.22和5.1.44,我得到了同样的问题。我在其他论坛http://bugs.mysql.com/bug.php?id=6251读到它不是一个bug,他们说这取决于C库的实现。
答案 0 :(得分:3)
您为这些列使用了哪种数据类型?
如果您需要精确的精确度,则应使用NUMERIC
或DECIMAL
,而不是FLOAT
,REAL
或DOUBLE
。
来自manual:
The DECIMAL and NUMERIC types store exact numeric data values.
These types are used when it is important to preserve exact precision,
for example with monetary data.
答案 1 :(得分:0)
如果适用,您可以使用FLOOR()
如果不适用,您最好在申请方面处理此问题。即完成整个计算应用程序,然后进行舍入,或者只是围绕应用程序。
SELECT (field_1*field_2*field_3*field_4) AS myCalculation FROM my table