SQL小数位保留,如果不够保留位数,自动添加0(二)
end
else if @savePard=0--保留部分=0
begin
declare @intPos int=0, -->0的数的位置
@next int, --下一位的值
@n int=1, --循环变量
@power1 float=1 --平方
while @intPos<=len(@decimalPart)
begin
set @intPos+=1
if substring(@decimalPart,@intPos,1)<>'0'
begin
set @next=substring(@decimalPart,@intPos+1,1)
break
end
end
set @savePard=convert(float,'0.'+substring(@decimalPart,1,@intPos))
if @next>=5
begin
while @n<=@intPos
begin
set @power1=@power1*0.1
set @n+=1
end
set @result=convert(varchar(20),@integerPart+convert(decimal(18,8),(@savePard+@power1)))
end
else
set @result=convert(varchar(20),@integerPart+convert(decimal(18,8),@savePard))
while charindex('.',@result)>0 and right(@result,1)='0'
set @result=left(@result,len(@result)-1)
if right(@result,1)='.' set @result=@result+'0'
end
end
else if len(@decimalPart)<@decimalPlace --如果小数部分<保留小数位数
begin
declare @j int=1
while @j<=@decimalPlace-len(@decimalPart)
begin
set @decimalPart+='0'
set @j+=1
end
set @result=@integerPart+@decimalPart
end
end
else --如果没有小数位
begin
set @result+='.'
declare @i int=1
while @i<= @decimalPlace
begin
set @result+='0'
set @i+=1
end
end
end
else set @result=@value
return @result
end