用sql语句如何实现小数位数四舍六入,小数位数是五的不变?晕乎乎的,焦急

解决方案 »

  1.   

    select cast(Round(12.2312321,5) as decimal(12,5))---------------------------------------
    12.23123
      

  2.   


    declare @dec dec(18,2)
    set @dec = 4.5select case (@dec - cast(cast(@dec as int) as dec)) when 0.5 then @dec
    else round(@dec,0) end
      

  3.   

    select cast(Round(12.2312321,5) as decimal(12,5))
    是小数的值为0.5?还是
      

  4.   


    --數字
    declare @d decimal(16,8)
    --小數點后保留位數
    declare @p intset @d = 12.375
    set @p = 3
    select case substring(ltrim(convert(varchar, round(@d,@p)-@d)),@p+3,1) when '5' then round(@d,@p+1)
    else round(@d,@p)
    end
      

  5.   

    create function f_RoundEx(@Value float, @Digit int)
    returns float
    as  
    begin
      declare @Factor float, @result float
      set @Factor=power(10,@Digit)
      if @Value < 0 
        set @result= floor(@Value*@Factor - 0.4)/ @Factor
      else
        set @result = floor(@Value * @Factor + 0.4)/ @Factor
      return @result
    end
    goselect dbo.f_RoundEx(1.244, 2)
    , dbo.f_RoundEx(1.245, 2)
    , dbo.f_RoundEx(1.246, 2)drop function dbo.f_RoundEx
    /*
    1.24                                                  1.24                                                  1.25
    */
      

  6.   


    select cast(数字-0.1 as dec(18,0))