Sql server SQL Server舍入(上限)
我有这个:Sql server SQL Server舍入(上限),sql-server,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中,两个操作数都是整数,因此结果总是先被截断(整数除法) 您需要设置一个或两个十进制或浮点以保
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)
@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
扮演浮子
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
如果您想要“最近的”,您可能需要取整
而不是上限
,但无论哪种方式,您都需要停止整数除法。如果您想要“最近的”,您可能需要取整
而不是上限
,但无论哪种方式,您都需要停止整数除法。