您的位置:首页 > 其它

获得一个数值的有效小数位数(不含后面的0补位)

2006-04-21 12:30 260 查看
VFP6.0时,如果小数部分一样会有问题,如9.2222,转换就变为9.222200000000001

?GetXsLen(9420.51280) &&返回值4
?GetXsLen(0.23000) &&返回值2
?GetXsLen(5.0) &&返回值0

Function GetXsLen
Lparameters lnNum
Private All
lnDecBak=Set('DECIMALS')
Set Decimals To 18
Do Case
Case Version(5)<700 &&VFP6
lcNum=Transform(lnNum) &&VFP6.0时,如果小数部分一样会有问题,如9.2222,转换就变为9.222200000000001
Case Version(5)>=700 And Version(5)<900 &&VFP7、8
lcNum=Transform(lnNum)
If At('.',lcNum)>0
lnNumLen=Len(lcNum)
For I=lnNumLen To 1 Step -1
If !Substr(lcNum,I,1)=='0'
Exit
Endif
Endfor
lcNum=Left(lCNum,I)
Endif
Case Version(5)>=900 &&VFP9及以上
lcNum=Alltrim(Transform(lnNum),'0')
Endcase
XsLen=Len(lcNum)-Iif(At('.',lcNum)>0,At('.',lcNum),Len(lcNum))
Set Decimals To (lnDecBak)
Return XsLen
Endfunc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐