6

我必须遗漏一些明显的东西。

select CEILING(85/30) = 2

85/30 = 2.83333

我希望值为 3。

CEILING 功能不应该为我圆润吗?

4

3 回答 3

14

尝试

SELECT CEILING(85.0/30)

为了比较

SELECT 85.0 / 30, 85 / 30

第一个示例使用浮点数,第二个示例使用整数,因此在达到上限函数之前对结果进行四舍五入。你所做的是

SELECT CEILING(2) 

而不是

SELECT CEILING(2.833333)
于 2013-02-26T19:58:54.350 回答
3

将其更改为:

select CEILING(85/30.0)

INT / INT 产生一个 INT,因此 85/30 向下舍入(FLOOR)。

于 2013-02-26T19:58:55.347 回答
1

使用一些类型化参数,您就不必担心如何输入数据。这是山姆

DECLARE @int_num integer
DECLARE @int_dem integer
DECLARE @dec_num decimal(18,0)
DECLARE @dec_dem decimal(18,0)

SET @int_num = 85
SET @int_dem = 30
SET @dec_num = 85
SET @dec_dem = 30

SELECT CEILING(@int_num / @int_dem) AS int_div, CEILING(@dec_num / @dec_dem) AS dec_div

int_div   |   dec_div
----------------------
2         |   3
于 2013-02-26T20:16:02.363 回答