浮点值在MySQL中围绕它自己

时间:2014-05-05 14:56:25

标签: php mysql

我刚刚遇到了一个非常奇怪的情况。

我尝试通过表单传递float / double值(320.25和660.60)以将其保存在MySQL数据库中。为这些值准备的字段设置为double(6.0)。

问题是,当我放320.25时 - 只保存了320。当我放入660.60时 - 突然667被保存在那个特定的领域。我甚至尝试用逗号(,)来做,但结果没有改变。

可能是什么问题?我没有在任何地方使用round()或类似的东西。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

在MySQL中,根据手册:double(m,d)是:“m”=数字总数,d =小数位数。

因此,对于您的设置,您希望使用double(6,2)保留最大9999,99或double(8,2)保存999999,99

答案 1 :(得分:1)

您可以使用decimal(6,2)double(6,2) 第一个数字代表所有数字,第二个数字代表小数

答案 2 :(得分:1)

简单。你告诉mysql只在你的浮点数中显示6个数字:

mysql> create table foo (
    dbl1 double(6,0),
    dbl2 double,
    dbl3 double(6,2));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into foo (dbl1, dbl2, dbl3) values (1.234567, 1.234567, 1.234567);
Query OK, 1 row affected (0.00 sec)

mysql> select * from foo;
+------+----------+------+
| dbl1 | dbl2     | dbl3 |
+------+----------+------+
|    1 | 1.234567 | 1.23 |
+------+----------+------+
1 row in set (0.00 sec)

请注意6,0字段显示小数位数,以及6,2浮点数如何显示 2 小数位数。