找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4581|回复: 0

[算法] 人民币小写转大写函数

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2009-12-1 15:19:10 | 显示全部楼层 |阅读模式
&&&人民币小写转大写函数
&&适用范围:负一万亿元-正一万亿元。
&&源码来源:梅子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
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表