用Delphi编写人民币大小写转换程序

软件世界

在财务管理系统中,有时需要打印大写人民币数字,于是笔者编写了以下一些函数使这一需要得以满足,现介绍如下:
FUNCTION JISUAN(TM:real):STRING;
var
shu:array of string[2]; //保存单位
shu1:array of string[2]; //保存数字大写字符
SHUZI:STRING; //保存数字小写
ZIFU:STRING; //保存数字转换后的结果
TMP1:INTEGER; //临时变量
BEGIN
SetLength(shu,10);SetLength(shu1,10);
shu[9]:='仟'; shu[8]:='佰'; shu[7]:='拾';shu[6]:='万';shu[5]:='仟';
shu[4]:='佰'; shu[3]:='拾'; shu[2]:='元';shu[1]:='角';shu[0]:='分';
SHU1[0]:='零';SHU1[1]:='壹';SHU1[2]:='贰';SHU1[3]:='叁';SHU1[4]:='肆';
SHU1[5]:='伍';SHU1[6]:='陆';SHU1[7]:='柒';SHU1[8]:='捌';SHU1[9]:='玖';
SHUZI:=INTTOSTR(round(TM*100)//将浮点型数字转换成字符型数字(保留二位小数)
if TM>99999999.99 then result='ERROR'
ELSE
BEGIN
ZIFU:='';
tmp1:=1;
while tmp1<=LENGTH(SHUZI) DO
begin
if COPY(SHUZI,TMP1;1)<>'0' then
begin
if COPY(SHUZI,TMP1-1,1)='0' then zifu:=zifu+shu1[0]];
ZIFU:=ZIFU+SHU1[STRTOINT(COPY((SHUZI,TMP1,1))]+SHU[length(shuzi)-tmp1];
end;
if COPY(SHUZI,TMP1;1)='0' then
BEGIN
IF TMP1=LENGTH(SHUZI)-2 THEN//个位
zifu:=zifu+SHU[2];
IF TMP1=LENGTH(SHUZI)-6 THEN//万位
zifu:=zifu+SHU[6];
END;//END IF
tmp1:=tmp1+1;
end; //END FOR
RESULT:=ZIFU;
END//END IF
end;
注:本程序在Delphi5、Win98下调试通过。