如何将数字转换为中文大写
编号: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)
此问题由李海回答。
| |
|
|
| |
|
|