【发布时间】:2016-01-12 21:11:24
【问题描述】:
当我查询 SELECT 1*7.6 时,它给了我 7.6
但是当我进行列乘时(products.commision*sold.amount):
SELECT *,
(products.commision*sold.amount) as fee
FROM sold
RIGHT JOIN products
ON sold.idprod=products.ID
AND DATE(sold.date) BETWEEN DATE('2015-10-01') AND DATE('2015-10-31')
WHERE sold.userid="1"
ORDER BY sold.userid
它给了我
ID | userid | date | idprod | amount | Category | Name | commision | fee
60 | 1 | 15-10-01 | 21 | 1 | Volish | Black | 7.6(float) | 7.599999904632568
为什么?
【问题讨论】:
-
您正在使用浮动列。 Decimal(19,6) 可能是您正在寻找的......
-
可能是因为
products.commission不完全是1或sold.amount不完全是7.6,但它本身的任何一个值都足够接近,可以这样显示。浮点数很棘手。 -
@Edward 我不明白?
-
一般来说,money 是 DECIMAL,而不是 FLOAT
-
@Mr.Llama 正好是 1 和 7.6,我必须准确
标签: mysql floating-accuracy multiplication