|
&&&人民币小写转大写函数
&&适用范围:负一万亿元-正一万亿元。
&&源码来源:梅子vfp论坛
&&程序完善:vf-xx
&&完善时间:2009年11月29日
&&联系方式:QQ289549393
FUNCTION mintomax(fun_m)
PRIVATE ALL LIKE fun_e*
IF fun_m=0
RETURN "金额为零!"
ENDIF
fun_n=IIF(fun_m>0,'','【负】')
fun_m=IIF(fun_m>0,fun_m,-fun_m)
IF fun_m>1000000000000
RETURN '超出'+fun_n+'壹万亿元了!' &&更大的数字可以通过延长'万仟佰拾亿仟佰拾万仟佰拾元角分'这个字符串来实现
ENDIF
fun_j=ALLT(STR(fun_m*100,LEN('万仟佰拾亿仟佰拾万仟佰拾元角分')/2)) &&此处的str函数必须指定第二个参数,以绕开科学计数法
fun_x=1 &&表达方式开关(0-完整表达;1-口语化表达)
DO CASE
CASE fun_x=0 &&完整表达计算模块
FOR fun_i=1 TO LEN(fun_j)
fun_n=fun_n+SUBSTR('零壹贰叁肆伍陆柒捌玖',2*VAL(SUBSTR(fun_j,fun_i,1))+1,2)
fun_n=fun_n+SUBSTR(RIGHT('万仟佰拾亿仟佰拾万仟佰拾元角分',LEN(fun_j)*2),2*(fun_i-1)+1,2)
NEXT
CASE fun_x=1 &&口语化表达计算模块
fun_s=RIGH('万仟佰拾亿仟佰拾万仟佰拾元角分',2*LEN(fun_j))
fun_g=0 &&连续零的个数
fun_v=0
DO WHILE fun_v<LEN(fun_j)
fun_v=fun_v+1
fun_e=SUBSTR(fun_j,fun_v,1)
fun_e=SUBSTR('零壹贰叁肆伍陆柒捌玖',2*VAL(fun_e)+1,2)
fun_f=SUBSTR(fun_s,2*fun_v-1,2)
IF fun_e='零'
fun_e=''
DO CASE
CASE fun_f$'亿元'
CASE fun_f='万'
IF RIGH(fun_n,2)='亿'
fun_f=''
ENDIF
OTHERWISE
fun_f=''
ENDCASE
fun_g=fun_g+1
ELSE
IF fun_g>0.AND.!(RIGH(fun_n,2)+fun_f)$fun_s
fun_e='零'+fun_e
ENDIF
fun_g=0
ENDIF
fun_n=fun_n+fun_e+fun_f
ENDDO
fun_n=fun_n+IIF(RIGH(fun_j,1)='0','整','')
ENDCASE
RETURN fun_n
ENDFUNC |
|