为什么会这样?
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?
仅供参考:装运和行项目为十进制(10,2),税金为双倍
2条答案
按热度按时间5cnsuln71#
尝试
你会得到
1.000
. 这是因为DECIMAL(a,b) * DECIMAL(c,d)
需要一个DECIMAL(a+c,b+d)
作为数据类型。bt1cpqcv2#
我对mysql了解不多,但我猜它是基于列类型的隐式转换。也许你可以试着把所有的东西都选出来,直到你发现问题出在哪里。小数(10,2)只允许2位小数(这就是2)