我正在尝试在MySQL中存储浮点值,而我的值似乎一直在搞乱。 :(
我将我的字段定义为float(10,7)
,并在插入之前在PHP中正确地舍入我的值:
$rndval = round($val,7)
INSERT INTO mytable (float) VALUES ($rndval)
但是当我插入一个47.5206797之类的值时,它在我的表中显示为47.520679 5 。那是为什么?
答案 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