📄 rmbdx.prg
字号:
****转换范围为万亿(即13位数,连小数点共16位),在实际运用中已绰绰有余
PARAMETERS jine
IF TYPE('jine')='N' AND jine>=0 &&若是数值型且非负数才予处理
zf1 = '壹贰叁肆伍陆柒捌玖'
zf2 = '圆万亿万拾佰仟分角'
jine = ROUND(jine,2)
DO CASE
CASE LEN(ALLTRIM(STR(jine,30,2)))>16 &&如果超过万亿数额,则不予处理,返回空字符
rmbdx=''
RETU rmbdx
CASE jine=0
rmbdx = '零圆整'
RETURN rmbdx
CASE jine=1000
rmbdx = '壹仟圆整'
RETURN rmbdx
CASE jine=1000000
rmbdx = '壹佰万圆整'
RETURN rmbdx
CASE jine=100000000
rmbdx = '壹亿圆整'
RETURN rmbdx
ENDCASE
LON = IIF(jine<1,2,4)+INT(LOG(jine)/LOG(10))
jns = IIF(jine<1,STR(jine*100,LON,0),STR(jine,LON,2))
zl = LON+1
rmbdx = ''
bbb = ''
DO WHILE LON>0
ZBDY = VAL(SUBSTR(jns,zl-LON,1))
u = INT(LON/4)
v = LON-4*u
IF ZBDY>0
u = IIF(v=0,u+u-1,v+v+IIF(u>0,7,13))
rmbdx = rmbdx+bbb+SUBSTR(zf1,ZBDY+ZBDY-1,2)+SUBSTR(zf2,u,2)
bbb = ''
ELSE
rmbdx = rmbdx+IIF(LON=1,'整',IIF(v=0,SUBSTR(zf2,u+u-1,2),''))
IF ZBDY=0
rmbdx = IIF(LON>2,rmbdx+'零',IIF(ZBDY=0,rmbdx+'零',IIF(LON>1,rmbdx+'整','')))
ENDIF
ENDIF
LON = IIF(LON=4,2,LON-1)
ENDDO
aaa = AT('零零',rmbdx)
IF aaa>1
DO WHILE aaa>0
rmbdx = STUFF(rmbdx,aaa,4,'零')
aaa = AT('零零',rmbdx)
ENDDO
ENDIF
aaa = AT('零整零',rmbdx)
rmbdx = IIF(aaa=0,rmbdx,STUFF(rmbdx,aaa,6,'整'))
aaa = AT('圆',rmbdx)
IF aaa>1
bbb = SUBSTR(rmbdx,aaa-2,2)
rmbdx = IIF(bbb='零',STUFF(rmbdx,aaa-2,2,''),rmbdx)
ENDIF
aaa = AT('整零',rmbdx)
rmbdx = IIF(aaa=0,rmbdx,STUFF(rmbdx,aaa,4,'整'))
aaa = AT('万',rmbdx)
IF aaa>1
bbb = SUBSTR(rmbdx,aaa-2,2)
rmbdx = IIF(bbb='零',STUFF(rmbdx,aaa-2,2,''),rmbdx)
ENDIF
ELSE
rmbdx=''
ENDIF
RETURN rmbdx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -