编程论坛's Archiver

zzyymxt 发表于 2008-5-8 16:26

!!!!!!!急救:怎样把金额转换成中文大写

各位大哥大姐帮帮忙!问
如果要求将一组金额以中文大写形式输出,要怎么做?就是平常写发票的那种。。。(例如:26734.86显示输出 贰万陆千柒百叁拾肆元捌角陆分)

Tiger5392 发表于 2008-5-8 18:22

这个问题,简单搜索即可得到答案。据说最省10句。其实可以更短。

啸凡 发表于 2008-5-8 22:28

最近问这个问题的人挺多的,而且都是刚注册的。
看看“简单的编程题,请大家帮帮忙,急啊!!!!”这个帖子,也是这个问题。
同学们啊!!!!

[[it] 本帖最后由 啸凡 于 2008-5-8 22:31 编辑 [/it]]

cz_zrh 发表于 2008-5-9 14:12

找到的

Function  StoB
parameters Text1
JE="????·??????é????°???"
cDW="????°??°?ò??°??°????°??°?ò??°??°????·?"
newString=alltrim(str(text1*100,19))     &&??????????·???×??ó?¤????19??????????
newStringLong=Len(newString)    &&????×?·??¤??
newDW=right(cDW,newStringLong*2)     &&??????×?·????ù??????????????

Num0=0  &&????????????
DXJE=""
for m=1 to newStringLong
        xZF=substr(NewString,m,1)     &&????????×?·?
        dZF=Substr(JE,2*val(xZF)+1,2)     &&?????ó??×?·?
        DW=substr(NewDW,2*M-1,2)     &&????????
        if dZF="??"
                dZF=""
                do case
                case DW $"????"     &&?????????ò??
                Case DW="?ò"
                    if right(DW,2)="??"
                            dZF=""
                    endif
                otherwise
                        DW=""
                endcase
                Num0=Num0+1
        else
                if Num0>0
                        dZF="??"+dZF
                endif
                Num0=0
        endif
               
        Dxje=Dxje+dZF+DW
endfor
Dxje=Dxje+iif(right(NewString,1)="0","??","")
Return Dxje

cz_zrh 发表于 2008-5-9 14:15

重发

Function  StoB                        
parameters Text1                       
JE="零壹贰叁肆伍陆柒捌玖"                       
cDW="亿仟佰拾万仟佰拾亿仟佰拾万仟佰拾元角分"                       
newString=alltrim(str(text1*100,19))     &&去掉小数部分,最大长度为19位既亿亿位                       
newStringLong=Len(newString)    &&取得字符长度                       
newDW=right(cDW,newStringLong*2)     &&取出此字符串所有能用到的单位                       
                       
Num0=0  &&记录零的个数                       
DXJE=""                       
for m=1 to newStringLong                       
        xZF=substr(NewString,m,1)     &&取出小写字符               
        dZF=Substr(JE,2*val(xZF)+1,2)     &&取出大写字符               
        DW=substr(NewDW,2*M-1,2)     &&取出单位               
        if dZF="零"               
                dZF=""       
                do case       
                case DW $"亿元"     &&如果为亿或元       
                Case DW="万"       
                    if right(DW,2)="亿"       
                            dZF=""
                    endif       
                otherwise        
                        DW=""
                endcase       
                Num0=Num0+1       
        else               
                if Num0>0       
                        dZF="零"+dZF
                endif       
                Num0=0       
        endif               
                       
        Dxje=Dxje+dZF+DW               
endfor                       
Dxje=Dxje+iif(right(NewString,1)="0","整","")                       
Return Dxje

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.