存储在MySQL中的浮点值不断变得混乱

时间:2012-02-22 23:55:38

标签: mysql floating-point rounding

我正在尝试在MySQL中存储浮点值,而我的值似乎一直在搞乱。 :(
我将我的字段定义为float(10,7),并在插入之前在PHP中正确地舍入我的值:

$rndval = round($val,7)
INSERT INTO mytable (float) VALUES ($rndval)

但是当我插入一个47.5206797之类的值时,它在我的表中显示为47.520679 5 。那是为什么?

1 个答案:

答案 0 :(得分:5)

如果您需要精确值,请将其存储为精确数据类型,例如DECIMAL(17,7),其范围与FLOAT(10,7)相同。唯一的缺点是DECIMAL将占用比等效FLOAT更多的磁盘空间,但与校正精度问题的浮点错误相比,这是微不足道的。

http://dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html

有关浮点数问题的更多信息,以下内容值得一读

http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html