因为在这里要为商品进行打折
那么就会出现小数位数,但要求不出现小数位,当有小数位的时候自动
取大于当前float的整数
如 11.1 => 12 ; 11.9 => 12 
谢谢PS:
如果我想要取到5角的这样的话又要怎么办比如
11.1 => 11.5  11.9 => 12谢谢

解决方案 »

  1.   

    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   
      

  2.   

    floor 应该可以但也可以自己写函数!!!
      

  3.   

    返回大于指定float型数据的整数形式 如 11.1 => 12 ; 11.9 => 12 谢谢  看错,floor刚好是反的.
      

  4.   

    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)
      

  5.   

    PS: 
    如果我想要取到5角的这样的话又要怎么办比如 
    11.1 => 11.5  11.9 => 12 这个得自己判断了,没有专门的函数.
      

  6.   

    SELECT FLOOR(round(123.55,0)), FLOOR(round(123.45,0))                
    ------- ------- 
    124     123(1 row(s) affected)
      

  7.   

    CEILING 
    返回大于或等于所给数字表达式的最小整数。 select CEILING (11.1),CEILING (11.9)
                
    ----- ----- 
    12    12(所影响的行数为 1 行)
    PS: 
    如果我想要取到5角的这样的话又要怎么办比如 
    11.1 => 11.5  11.9 => 12 select CEILING (11.1*2)/2,CEILING (11.9*2)/2                            
    ------------- ------------- 
    11.500000     12.000000(所影响的行数为 1 行)
      

  8.   

    那这个呢
    PS: 
    如果我想要取到5角的这样的话又要怎么办比如 
    11.1 => 11.5  11.9 => 12 
      

  9.   

    ALTER FUNCTION [dbo].[Getint](@input float) RETURNS int
    as
    BEGIN
        declare @output int
    select @output=floor(@input+1.0)
    if (@input<0)
    select @output=floor(@input)
    RETURN @output
    END根据实际修改,不过负数应该用不上吧。
      

  10.   

    CREATE FUNCTION GetNumber(@x float,@flag tinyint)
    RETURNs varchar(20)
    AS
    BEGIN
    DECLARE @s varchar(20)
    IF @flag=1
    SET @s=cast(ceiling(@x) AS varchar(20))
    ELSE
    SET @s=cast(CASE WHEN @x-floor(sign(@x)*@x)>0.5 THEN ceiling(@x) ELSE
    sign(@x)*(floor(sign(@x)*@x)+0.5) END AS varchar(20)) RETURN @s
    END
    go
    SELECT dbo.getnumber(23.0043,2)--23.5
      

  11.   

    alter function round_1(
     @amt  decimal(22,2)    --- 输入的数
    ,@int_1 decimal(22,2))  --- 怎么进位
    returns decimal(22,2)
    as
    BEGIN
    if(@int_1>1)
         set @amt=0
    else if(@amt-floor(@amt)>@int_1)
     set @amt=floor(@amt)+1
    else if (@amt-floor(@amt)<=@int_1 and @amt-floor(@amt)<>0 )
      set @amt=floor(@amt)+@int_1
    RETURN @amt
    END
    select dbo.round_1(11.1,0.5)select dbo.round_1(11.9,0.5)=================================---------------------------------------
    11.50(1 行受影响)
    ---------------------------------------
    12.00(1 行受影响)
      

  12.   

    PS: 
    如果我想要取到5角的这样的话又要怎么办比如 
    11.1 => 11.5  11.9 => 12 ALTER FUNCTION [dbo].[Getzhekou](@input float) RETURNS float
    as
    BEGIN
        declare @output float
    select @output=round(@input)
    if @output<@intput
    select @output=@output+0.5
        RETURN @output
    END
      

  13.   


    create function round_1(
     @amt  decimal(22,2)
    ,@int_1 decimal(22,2))
    returns decimal(22,2)
    as
    BEGIN
    if(@int_1>1)
         set @amt=0
    else if(@amt-floor(@amt)>@int_1)
     set @amt=floor(@amt)+1
    else if (@amt-floor(@amt)<=@int_1 and @amt-floor(@amt)<>0 )
      set @amt=floor(@amt)+@int_1
    RETURN @amt
    END
    select dbo.round_1(11.1,0.5)select dbo.round_1(11.9,0.5)
      

  14.   


    select CEILING (11.1*2)/2,CEILING (11.9*2)/2
      

  15.   


    --11.1 => 12 ; 11.9 => 12 
    select ceiling(11.1) 
    select ceiling(11.9) --11.1 => 11.5  11.9 => 12
    declare @i numeric(8,2)
    set @i=11.1 
    select case when ROUND(@i,0)>@i then ROUND(@i,0) else floor(@i)+0.5 enddeclare @i numeric(8,2)
    set @i=11.9 
    select case when ROUND(@i,0)>@i then ROUND(@i,0) else floor(@i)+0.5 end
      

  16.   

    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)