--原帖地址:
--http://blog.csdn.net/DengXingJie/archive/2011/02/25/6208613.aspx
/*
***************************************
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
*/