根据进舍位或四舍五入来求值

/*

***************************************

Program ID: FUN_GetValueByRoundMode

Purpose   : 根据进舍位或四舍五入来求值

Author    : Jesse

Date      : 2011.02.14

***************************************

*/

Go

--创建函数

Create function dbo.FUN_GetValueByRoundMode

(

    @Value decimal(18,6),    --需进行运算的值

    @Bit int,                --小数位数

    @RoundMode char(1))      --求值方式:-四舍五入、-舍去、-进位

Returns decimal(18,6)

As

begin

    declare @Result decimal(18,6)

    set @Value=isnull(@Value,0)

  

    if @RoundMode='1'         --舍去

        Select @Result=Round(@Value,@Bit,1)

    else if @RoundMode='2'    --进位

        Begin

            if @Value>Round(@Value,@Bit,1)    --确保在有尾数的情况下才进位

                Select @Result=Round(@Value,@Bit,1)+1.0/Power(10,@Bit)

            else

                Select @Result=Round(@Value,@Bit,1)

        end

    else

        Select @Result=Round(@Value,@Bit)

 

    Return Isnull(@Result,0)

end  

 

--测试示例

select dbo.FUN_GetValueByRoundMode(9.82458,3,'0')

select dbo.FUN_GetValueByRoundMode(9.82458,3,'1')

select dbo.FUN_GetValueByRoundMode(9.82458,3,'2')

 

--运行结果

/*

9.825000

9.824000

9.825000

*/

原文地址:https://www.cnblogs.com/accumulater/p/6244645.html