6
DECLARE @a int;
DECLARE @b int;

SET @a = 9;
SET @b = 2;

SELECT CEILING (@a/@b);

它返回 4 而不是 5。为什么?

编辑:如果商不是整数,我想得到下一个最小的整数。

4

3 回答 3

8

尝试:

SELECT CEILING (@a/CAST(@b AS float))

还要考虑NULLIF(@b,0)避免除零错误。

于 2014-08-27T10:59:48.447 回答
4

将 9 除以 2 后,小数部分被截断为其整数部分 - 4,而不是四舍五入为 5。尝试:

SELECT 9/2

Resilt是4。然后CEILING(4) = 4

要获得下一个整数,请将变量声明为可以处理小数部分的数据类型:NUMERIC, FLOAT, REAL.

于 2014-08-27T10:57:26.273 回答
3

SQL Server 进行整数除法。所以在 SQL Server 中 9/2 = 4。

取整数的上限是相同的整数。

于 2014-08-27T10:57:43.990 回答