十进制转换为八进制的函数

十进制转换为八进制的函数自定义函数

---------------------------------------------------------------

?DecToOct(123.625) &&调用
&&结果 173.5

?DecToOct(123) &&调用
&&结果 173

FUNCTION DecToOct
LPARAMETERS ln10
LOCAL lnDecInt,lnDecDec,lnOctInt,lnOctDec,lntmp1,lntmp2
SET DECIMALS TO 18
lnOctInt=''
lnOctDec=''
IF INT(ln10)<>ln10
lnDecInt=INT(ln10)
lnDecDec=ln10-INT(ln10)
ELSE
lnDecInt=ln10
lnDecDec=0
ENDIF
DO WHILE lnDecInt>=8
lntmp1=INT(lnDecInt/8)
lnOctInt=STR(MOD(lnDecInt,8),1)+lnOctInt
lnDecInt=lntmp1
ENDDO
DO WHILE lnDecDec>0 AND INT(lnDecDec)<>lnDecDec
IF lnDecDec>1
lnDecDec=lnDecDec-INT(lnDecDec)
ENDIF
lntmp2=lnDecDec8
lnOctDec=lnOctDec+STR(INT(lnDecDec
8),1)
lnDecDec=lntmp2
ENDDO
IF lnDecDec>0
SET DECIMALS TO IIF(LEN(lnOctDec)>18,18,LEN(lnOctDec))
RETURN VAL(STR(lntmp1,1)+lnOctInt+'.'+lnOctDec)
ELSE
RETURN INT(VAL(STR(lntmp1,1)+lnOctInt))
ENDIF
ENDFUNC

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus