MySQL,ROUND函数中的问题,里面有计算

时间:2015-04-10 06:14:23

标签: mysql

我有一个名为“itemprices”的表,并且有一个名为“price”的字段。我需要用它的GST值查询价格值,它是价格值的10%,更重要的是,该值必须四舍五入到小数点后两位。

如果价格= 70.85,GST值= 7.085(价格/ 100 * 10);

  • A)当我使用上述计算的ROUND函数时,它将返回7.08
  • B)当我直接使用带有7.085的ROUND功能时,它将返回7.09

(实际上我想在两种情况下都有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

返回值如下。

  • price = 70.85
  • gstvalue = 7.085
  • roundedgstvalue = 7.08
  • customround = 7.09

我正在使用MySQL版本5.1.41,我想知道为什么ROUND函数在情况A和B中表现不同。

此外,我想有一个解决方案,以获得情况B的值7.09。

感谢您的评论和答案。 谢谢!

1 个答案:

答案 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