关于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 是一变量

解决方案 »

  1.   

    CEILING
    返回大于或等于所给数字表达式的最小整数。语法
    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)
      

  2.   

    CEILING
    返回大于或等于所给数字表达式的最小整数。语法
    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)
      

  3.   

    FLOOR
    返回小于或等于所给数字表达式的最大整数。语法
    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   
      

  4.   

    CEILING 
    返回大于或等于所给数字表达式的最小整数。 FLOOR 
    返回小于或等于所给数字表达式的最大整数。 两个函数的作用不一样,怎么能要求结果一定要一样呢?
      

  5.   

    CAST( (((12/10+2)*3) AS decimal(10,5))
    米把变量转换一下
      

  6.   

    原来的代码是这样的:结果是9,不是10
    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
      

  7.   


    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 
      

  8.   

    哦,看明白了.把12/10先转换一下.
    12/10 = 1
    cast(12/10 as decimal(18,2)) = 1.20