舍入TSQL

时间:2013-02-26 19:56:55

标签: sql-server tsql rounding

我得错过一些明显的东西。

select CEILING(85/30) = 2

85/30 = 2.83333

我希望该值为3。

CEILING功能不应该为我收听吗?

3 个答案:

答案 0 :(得分:14)

尝试

SELECT CEILING(85.0/30)

并进行比较

SELECT 85.0 / 30, 85 / 30

第一个示例使用浮点数,第二个示例使用整数,因此在触发上限函数之前舍入结果。你做的是

SELECT CEILING(2) 

而不是

SELECT CEILING(2.833333)

答案 1 :(得分:3)

将其更改为:

select CEILING(85/30.0)

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

答案 2 :(得分: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