我有一个名为“itemprices”的表,并且有一个名为“price”的字段。我需要用它的GST值查询价格值,它是价格值的10%,更重要的是,该值必须四舍五入到小数点后两位。
如果价格= 70.85,GST值= 7.085(价格/ 100 * 10);
(实际上我想在两种情况下都有7.09)
见下面的查询。
SELECT
price,
(price / 100 * 10) AS gstvalue,
ROUND( (price / 100 * 10), 2 ) AS roundedgstvalue,
ROUND( 7.085, 2 ) AS customround FROM `itemprices`
WHERE id = 10
返回值如下。
我正在使用MySQL版本5.1.41,我想知道为什么ROUND函数在情况A和B中表现不同。
此外,我想有一个解决方案,以获得情况B的值7.09。
感谢您的评论和答案。 谢谢!
答案 0 :(得分:0)
ROUND( (
CEIL( price *10 ) /100 ) , 2
) AS roundedgstvalue
上面解决了我的问题。
PS ::: 即使上面解决了我的价值70.85的问题,它对70.83这样的值也不正确。因为,它仍然返回7.09作为roundgstvalue。所以我必须检查我的解决方案。
IF( price >= ( (
(
FLOOR( price *10 ) + CEIL( price *10 ) ) /2 ) /10
), ROUND( (
CEIL( price *10 ) /100 ) , 2
), ROUND( (
FLOOR( price *10 ) /100 ) , 2
)
) AS roundedgstvalue