为什么会这样?
SELECT
c.tax_rate,
c.line_item_total_price,
c.shipping_total_price,
ROUND((c.tax_rate *
(c.line_item_total_price+c.shipping_total_price)),2),
(c.tax_rate * (c.line_item_total_price+c.shipping_total_price))
FROM carts c
WHERE c.id = 323002;
返回:
.07
925.00
62.50
69.12
69.125
但这是
SELECT
ROUND((.07 * (925.00+62.50)),2),
(.07 * (925.00+62.50));
返回正确的内容:
69.13
69.1250
为什么在那个数字的末尾再加上0?
仅供参考:运输和订单项为DECIMAL(10,2),税为DOUBLE
答案 0 :(得分:1)
我对MySQL不太了解,但我想这是基于列类型的隐式转换。也许尝试投射所有内容,直到找到导致问题的原因。 DECIMAL(10,2)仅允许2个小数位(这是2个小数)
答案 1 :(得分:0)
尝试
SELECT 1.00 * 1.0
您将获得1.000
。这是因为DECIMAL(a,b) * DECIMAL(c,d)
的确切结果需要DECIMAL(a+c,b+d)
作为数据类型。