热情软件屋

 

如何将数字转换为中文大写


编号:QA000321
建立日期: 1999年1月10日 最后修改日期:2001年4月17日
所属类别:

Tony:
    工具:foxpro2.5
    操作系统:Win98
    如何将$12.3转换为中文格式,如“壹什贰元叁角”?

回答:

    你可以使用下面这个函数。只要使用ChineseFormat(12.3)就可以得到你想要的。
    Function ChineseFormat
    Para Number
    sString = "分角元拾佰仟万拾佰仟万亿拾佰仟万"
    sNumber = "零壹贰叁肆伍陆柒捌玖"
    s = Alltrim(Str(Number*100, 30))
    ? s
    sFormat= ""
    For i = 1 To Len(s)
     c = SubStr(s, Len(s) - i + 1, 1)
     sFormat = SubStr(sNumber, Val(c) * 2 + 1, 2) + SubStr(sString, i*2-1, 2) + sFormat
    EndFor
    Return sFormat
    
    
    在你面前的意见:
    不知以上代码为何在我的WIN98/简体中文版下转换不正确。我有以下代码调试通过:
    PARAMETERS NN
    IF NN >9999999999999.99
    RETURN('金额溢出'+CHR(7)+CHR(7)+CHR(7))
    ENDIF
    IF NN=0
    HZ='零元'
    RETURN HZ
    ENDIF
    NS='零壹贰叁肆伍陆柒捌玖'
    NW='分角圆拾佰仟万拾佰仟亿拾佰仟万'
    NA=LTRIM (TRIM (STR (INT (NN*100),16)))
    LA=LEN(NA)
    X=1
    HZ=SPAC(0)
    DO WHILE X <=LA
    NK=VAL(SUBSTR (NA,X,1))
    N1=SUBSTR(NS,NK*2+1,2)
    N2=SUBSTR(NW,LA*2+1-X*2,2)
    DO CASE
    CASE NK=0.AND.(N2='亿'.OR.N2='万'.OR.N2='圆')
    IF RIGHT (HZ,2)='零'
    HZ=STUFF (HZ,LEN (HZ)-1,2,SPAC(0))
    ENDIF
    IF RIGHT (HZ,2)='亿'
    IF N2='圆'
    N1=N2
    N2='零'
    ELSE
    N2=SPAC(0)
    ENDIF
    ELSE
    N1=N2
    N2='零'
    ENDIF
    CASE NK=0
    N1=IIF (RIGHT (HZ,2)='零',SPAC(0),N1)
    IF N2='分'
    HZ=STUFF(HZ,LEN(HZ)-1,2,'整')
    N1=SPAC(0)
    ENDIF
    N2=SPAC(0)
    ENDCASE
    HZ=HZ+N1+N2
    X=X+1
    ENDDO
    IF LTRIM(TRIM(RIGHT(LTRIM(TRIM(HZ)),2)))#'分' .AND. LTRIM(TRIM(RIGHT(LTRIM(TRIM(HZ)),4)))#'圆整'
    HZ=STUFF(HZ,LEN(HZ)-1,2,'角')
    ELSE
    HZ=HZ
    ENDIF
    RETURN (HZ)

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio