DECLARE @a int;
DECLARE @b int;
SET @a = 9;
SET @b = 2;
SELECT CEILING (@a/@b);
它返回的是4,而不是5。为什么?
编辑:如果商不是整数,我想要得到下一个最小的整数。
DECLARE @a int;
DECLARE @b int;
SET @a = 9;
SET @b = 2;
SELECT CEILING (@a/@b);
它返回的是4,而不是5。为什么?
编辑:如果商不是整数,我想要得到下一个最小的整数。
尝试:
SELECT CEILING (@a/CAST(@b AS float))
同时还需考虑 NULLIF(@b,0)
,以避免除零错误。
将9除以2后,小数部分被截断为其整数部分-4,而不是被四舍五入为5。请尝试:
SELECT 9/2
结果是4。然后CEILING(4) = 4
要获得下一个整数,请声明能够处理小数部分的数据类型变量:NUMERIC
,FLOAT
,REAL
。
SQL Server会进行整数除法。因此,9/2在SQL Server中的结果为4。
将整数取上限等同于保留原整数。