sqlserver 四舍六入五成双(2)

if object_id('fnRound') is not null 

  drop function fnRound 

  GO 

  create function fnRound(@num float,@i int) 

  returns varchar(20) 

  as 

  begin 

      declare @str varchar(20)     /*转换成字符类型*/ 

      declare @str2 varchar(20)    /*小数位数后面的字符串*/ 

      declare @str3 varchar(2)     /*小数位数字符串*/ 

      set @str = convert(varchar,@num) 

      if (charindex('.',reverse(@str)) <= 0) 

      begin 

      if @i > 0 

   begin 

   set @str = @str + '.' 

   while @i > 0 

    begin 

    set @str  = @str + '0' 

    set @i = @i - 1 

    end 

   end 

   return @str 

   end 

      set @str2 = reverse(substring(reverse(@str),1,charindex('.',reverse(@str)) - 1 - @i)) 

      set @str3 = substring(@str,charindex('.',@str) + 1,@i) 

      if @str2%5 = 0 and @str3%2 = 0   /*如果符合"五成双"*/ 

          set @str = substring(@str,1,charindex('.',@str) + @i) 

      else    /*否则四舍五入*/ 

          set @str = convert(varchar,round(@num,@i)) 

      RETURN @str 

  end 

  GO

你可能感兴趣的:(四舍六入五成双)