MYSQL中float类型奇怪的减法问题
update user set money=money-0.01 where uName=’701′
当数据库的money的值为0.01时 无法执行 提示错误如下:
Out of range value adjusted for column ‘money’ at row 1
当数据库的money的值为6.01时 执行下例语句就成功
update user set money=money-6.01 where uName=’701′
money 字段是float类型 长度为10,保留2位小数,默认0.00;
请高手解答!
奇怪,在我的电脑上怎么没有这个问题?
请问楼主用的是什么版本的mysql?
没有出现你所说的问题。
建议你能详细描述你的错误产生步骤,否则别人很难模拟再现你的问题。
-
SQL code
mysql> desc t_a175460677;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| uName | char(3) | YES | | NULL | |
| money | float(10,2) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.06 sec)
mysql>
mysql> select * from t_a175460677;
+-------+-------+
| uName | money |
+-------+-------+
| 701 | 0.01 |
| 701 | 6.01 |
+-------+-------+
2 rows in set (0.06 sec)
mysql> update t_a175460677 set money=money-0.01 where uName='701';
Query OK, 2 rows affected (0.06 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select * from t_a175460677;
+-------+-------+
| uName | money |
+-------+-------+
| 701 | 0.00 |
| 701 | 6.00 |
+-------+-------+
2 rows in set (0.00 sec)
mysql>
[color=#FFFFFF][/color]