1
我有这样的:的SQL Server舍入(上限)
DECLARE @billsec as int
SET @billsec = 67
DECLARE @_cost as money
SET @_cost = 0.1 + (CEILING((@billsec/60)) * 0.015)
print @_cost
它返回0.12,但我期待为0.13我想圆的@billsec
到最近分钟。
由于
我有这样的:的SQL Server舍入(上限)
DECLARE @billsec as int
SET @billsec = 67
DECLARE @_cost as money
SET @_cost = 0.1 + (CEILING((@billsec/60)) * 0.015)
print @_cost
它返回0.12,但我期待为0.13我想圆的@billsec
到最近分钟。
由于
在@billsec/60
两个操作数都是整数所以结果是始终截短第一(整数除法)。
您需要使一个或两个小数或浮点数来保留小数部分。否则CEILING
将永远是一个无操作,因为你总是传递一个确切的整数。
与下面的更换代码的相关部分将解决这一
CEILING(@billsec/60.0)
投浮法...
DECLARE @billsec as int
SET @billsec = 67
DECLARE @_cost as money
SET @_cost = 0.1 + (CEILING((cast (@billsec as float)/60)) * 0.015)
print @_cost
如果你想“最近”可能是你需要'round'而不是'天花板“,但无论你需要停止整数除法。 – 2014-09-10 21:19:04