有表如下,Date 为 DATE 类型,GID、客户ID、销售量 皆为 INT 类型,而进价和售价为 FLOAT 类型:
+------------+-----+------+--------+------+--------+
| Date | GID | 进价 | 客户ID | 售价 | 销售量 |
+------------+-----+------+--------+------+--------+
| 2008-05-04 | 8 | 12 | 3 | 18 | 1 |
| 2008-05-04 | 9 | 0.4 | 3 | 8 | 14 |
+------------+-----+------+--------+------+--------+mysql> UPDATE 销售表 SET 销售量=销售量+4 WHERE Date='2008-5-4' AND GID=8 AND 进价=12 AND 客户ID=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
上句可成功执行,但下句却无法完成预期目的:
mysql> UPDATE 销售表 SET 销售量=销售量+4 WHERE Date='2008-5-4' AND GID=9 AND 进价=0.4 AND 客户ID=3;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
经我反复测验,发现是 进价=0.4 这个浮点数的问题,如果改成 2.5,就没问题了,但若为 0.4 或 0.3 等,就一直是这个问题,请问该如何解决。
+------------+-----+------+--------+------+--------+
| Date | GID | 进价 | 客户ID | 售价 | 销售量 |
+------------+-----+------+--------+------+--------+
| 2008-05-04 | 8 | 12 | 3 | 18 | 1 |
| 2008-05-04 | 9 | 0.4 | 3 | 8 | 14 |
+------------+-----+------+--------+------+--------+mysql> UPDATE 销售表 SET 销售量=销售量+4 WHERE Date='2008-5-4' AND GID=8 AND 进价=12 AND 客户ID=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
上句可成功执行,但下句却无法完成预期目的:
mysql> UPDATE 销售表 SET 销售量=销售量+4 WHERE Date='2008-5-4' AND GID=9 AND 进价=0.4 AND 客户ID=3;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
经我反复测验,发现是 进价=0.4 这个浮点数的问题,如果改成 2.5,就没问题了,但若为 0.4 或 0.3 等,就一直是这个问题,请问该如何解决。
第24章:精度数学