Welcome

首页 / 软件开发 / Delphi / delphi实现小写金额转换

delphi实现小写金额转换2008-02-02财务中总少不了大写的金额表示方式,如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它却几乎可以无限制的转换,只要你能读得出来和写得进去:

function Tform1.SmallTOBig(small:real):string;
var SmallMonth,BigMonth:string;
wei1,qianwei1:string[2];
wei,qianwei,dianweizhi,qian:integer;
begin
{------- 修改参数令值更精确 -------}
{小数点后的位数,需要的话也可以改动该值}
qianwei:=-2; {转换成货币形式,需要的话小数点后加多几个零}
Smallmonth:=formatfloat(0.00,small);
{---------------------------------}
dianweizhi :=pos(.,Smallmonth);{小数点的位置}
{循环小写货币的每一位,从小写的右边位置到左边}
for qian:=length(Smallmonth) downto 1 do
begin
{如果读到的不是小数点就继续}
if qian<>dianweizhi then
begin
{位置上的数转换成大写}
case strtoint(copy(Smallmonth,qian,1)) of
1:wei1:=壹; 2:wei1:=贰;
3:wei1:=叁; 4:wei1:=肆;
5:wei1:=伍; 6:wei1:=陆;
7:wei1:=柒; 8:wei1:=捌;
9:wei1:=玖; 0:wei1:=零;
end;
{判断大写位置,可以继续增大到real类型的最大值,可是谁有那么多钱}
case qianwei of
-3:qianwei1:=厘;
-2:qianwei1:=分;
-1:qianwei1:=角;
0 :qianwei1:=元;
1 :qianwei1:=拾;
2 :qianwei1:=佰;
3 :qianwei1:=千;
4 :qianwei1:=万;
5 :qianwei1:=拾;
6 :qianwei1:=佰;
7 :qianwei1:=千;
8 :qianwei1:=亿;
9 :qianwei1:=十;
10:qianwei1:=佰;
11:qianwei1:=千;
end;
inc(qianwei);
BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}
end;
end;
SmallTOBig:=BigMonth;
end;

程序调用如下“edit1.text:=SmallTOBig(1234567890.1234);”他自动默认小数点后两位。