std*_*err 1 mysql floating-point rounding
我正在尝试在MySQL中存储浮点值,我的值似乎一直在搞乱.:(
我将我的字段定义为,float(10,7)并在插入之前在PHP中正确地舍入我的值:
$rndval = round($val,7)
INSERT INTO mytable (float) VALUES ($rndval)
Run Code Online (Sandbox Code Playgroud)
但是当我插入一个47.5206797之类的值时,它在我的表中显示为47.520679 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
| 归档时间: |
|
| 查看次数: |
6372 次 |
| 最近记录: |