分享

人民币小写转大写函数完整版!|交流区

 木子六一 2012-05-31

近来无事在论坛闲逛时收集了各家的源码,经反复实测后,以其中两个无BUG且表达方式不同的程序进行了整合。呵呵!现在回馈给大家......

&&&人民币小写转大写函数
&&适用范围:负一万亿元-正一万亿元。
&&源码来源:梅子vfp论坛
&&程序完善:vf-xx
&&完善时间:2009年11月29日
&&联系方式:QQ289549393

FUNCTION mintomax(fun_m)
PRIVATE ALL LIKE fun_*
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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多