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