CSDN博客

img yangliu

金额小写转大写函数

发表于2004/12/31 23:26:00  1112人阅读

////////////////////////////
//  金额小写转大写        //
//  武汉探索电脑工作室    //
//  http://tansuo.51.net  //
////////////////////////////
function ToBigRMB(Num: Currency): String;
const
BigNumber='零壹贰叁肆伍陆柒捌玖';
BigUnit='万仟佰拾亿仟佰拾万仟佰拾元';
{共可表示13位金额}
var
nLeft, nRigth, lTemp, rTemp, BigNumber1, BigUnit1, RMB: string;
I: Integer;
begin  {取整数和小数部分}
RMB := FormatCurr('0.00', Num);
nLeft:=copy(RMB, 1, Pos('.', RMB) - 1);
nRigth:=copy(RMB, Pos('.', RMB) + 1, 2);
{转换整数部分}
if nLeft<>'0' then
for I:=1 to Length(nLeft) do
begin
BigNumber1:=copy(BigNumber, StrToInt(nLeft) * 2 + 1, 2);
BigUnit1:=copy(BigUnit, (Trunc(Length(BigUnit) / 2) - Length(nleft) + I - 1) * 2 + 1, 2);
if (BigNumber1='零') and ((copy(lTemp, Length(lTemp)- 1, 2))='零') then
lTemp:=copy(lTemp, 1, Length(lTemp) - 2);
if (BigNumber1='零') and ((BigUnit1='亿') or (BigUnit1='万') or (BigUnit1='元')) then
begin
BigNumber1:=BigUnit1;
if BigUnit1<>'元' then BigUnit1:='零' else BigUnit1:='';
end;
if (BigNumber1='零') and (BigUnit1<>'亿') and (BigUnit1<>'万') and (BigUnit1<>'元') then BigUnit1:='';
lTemp:=lTemp + BigNumber1 + BigUnit1;
end;

if Pos('亿万', lTemp)<>0 then
Delete(lTemp, Pos('亿万', lTemp) + 2, 2);  {转换小数部分}

if StrToInt(nRigth[1])<>0 then
rTemp:=copy(BigNumber, StrToInt(nRigth[1]) * 2 + 1, 2) + '角';

if StrToInt(nRigth[2])<>0 then
begin
if (nLeft<>'0') and (StrToInt(nRigth[1])=0) then rTemp:='零';
rTemp:=rTemp + copy(BigNumber, StrToInt(nRigth[2]) * 2 + 1, 2) + '分';
RMB:=lTemp + rTemp;
end
else
RMB :=lTemp + rTemp + '整';

Result := RMB;
end;
0 0

相关博文

我的热门文章

img
取 消
img即使是一小步
也想与你分享
打开
img