您的位置:首页 > 其它

【叶子函数分享三十三】根据进舍位或四舍五入来求值

2011-03-20 16:04 567 查看
--原帖地址:
--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
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: