我有这个:
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
四舍五入到最近的分钟。
由于
答案 0 :(得分:4)
@billsec/60
中的两个操作数都是整数,因此结果总是先截断(整数除法)。
您需要使用decimal或float中的一个或两个来保留小数部分。否则CEILING
将永远是一个无操作,因为你总是传递一个完整的整数。
用以下代码替换相关的代码部分将解决此问题
CEILING(@billsec/60.0)
答案 1 :(得分:2)
施放为浮动......
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