关于ceiling和floor的问题
一、
select ceiling ((12/10+2)*3) --9
select floor ((12/10+2)*3) --9
二、
select ceiling((1.2+2)*3) --10
select floor((1.2+2)*3) --9因为 一的括号里的值 不是浮点数,所以结果不同
请问,怎么才能让一和二的结果相同呢?括号里的值 ((12/10+2)*3 是一变量
一、
select ceiling ((12/10+2)*3) --9
select floor ((12/10+2)*3) --9
二、
select ceiling((1.2+2)*3) --10
select floor((1.2+2)*3) --9因为 一的括号里的值 不是浮点数,所以结果不同
请问,怎么才能让一和二的结果相同呢?括号里的值 ((12/10+2)*3 是一变量
返回大于或等于所给数字表达式的最小整数。语法
CEILING ( numeric_expression ) 参数
numeric_expression是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。返回类型
返回与 numeric_expression 相同的类型。示例
下面的示例显示使用 CEILING 函数的正数、负数和零值。 SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)
GO下面是结果集:--------- --------- -------------------------
124.00 -123.00 0.00 (1 row(s) affected)
返回大于或等于所给数字表达式的最小整数。语法
CEILING ( numeric_expression ) 参数
numeric_expression是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。返回类型
返回与 numeric_expression 相同的类型。示例
下面的示例显示使用 CEILING 函数的正数、负数和零值。 SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)
GO下面是结果集:--------- --------- -------------------------
124.00 -123.00 0.00 (1 row(s) affected)
返回小于或等于所给数字表达式的最大整数。语法
FLOOR ( numeric_expression )参数
numeric_expression精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。 返回类型
返回与 numeric_expression 相同的类型。示例
此示例说明正数、负数和货币值在 FLOOR 函数中的运用。SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)结果为与 numeric_expression 数据类型相同的计算值的整数部分。 --------- --------- -----------
123 -124 123.0000
返回大于或等于所给数字表达式的最小整数。 FLOOR
返回小于或等于所给数字表达式的最大整数。 两个函数的作用不一样,怎么能要求结果一定要一样呢?
米把变量转换一下
declare @qty_logic varchar(100)
declare @s nvarchar(4000)
select @qty_logic='ceiling (12/10+2)*3'select @s=N'select @qty_logic= ' + stuff(@qty_logic,charindex('ceiling',@qty_logic,1),7,' ' )
execute sp_executesql @s,N'@qty_logic varchar(200) out',@qty_logic out
select @qty_logic=ceiling(cast(@qty_logic as float))select @qty_logic --9
select ceiling ((12*1.0/10+2)*3) --9
select floor ((12*1.0/10+2)*3) --9select ceiling((1.2+2)*3) --10
select floor((1.2+2)*3) --9
12/10 = 1
cast(12/10 as decimal(18,2)) = 1.20