在mysql中循环不能很好地工作

时间:2011-06-28 19:33:23

标签: mysql rounding

圆形功能有时不能很好地工作。我在我的数据库中有这样一行:

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库的实现。

2 个答案:

答案 0 :(得分:3)

您为这些列使用了哪种数据类型?

如果您需要精确的精确度,则应使用NUMERICDECIMAL,而不是FLOATREALDOUBLE

来自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