https://www.jmqz1000.com

小写金额转换

如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它几乎可以无限制的转换,只要你能读得出来和写得进去:

function Tform1.SmallTOBig(small:real):string;
var SmallMonth,BigMonth:string;
wei1,qianwei1:string[2];
qianwei,dianweizhi,qian:integer;
begin
{------- 修改参数令值更精确 -------}
{小数点后的位置,需要的话也可以改动-2值}
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
\t 1:wei1:=''壹''; 2:wei1:=''贰'';
\t 3:wei1:=''叁''; 4:wei1:=''肆'';
\t 5:wei1:=''伍''; 6:wei1:=''陆'';
\t 7:wei1:=''柒''; 8:wei1:=''捌'';
\t 9:wei1:=''玖''; 0:wei1:=''零'';
end;
{判断大写位置,可以继续增大到real类型的最大值}
case qianwei of
\t -3:qianwei1:=''厘'';
\t -2:qianwei1:=''分'';
\t -1:qianwei1:=''角'';
\t 0 :qianwei1:=''元'';
\t 1 :qianwei1:=''拾'';
\t 2 :qianwei1:=''佰'';
\t 3 :qianwei1:=''千'';
\t 4 :qianwei1:=''万'';
\t 5 :qianwei1:=''拾'';
\t 6 :qianwei1:=''佰'';
\t 7 :qianwei1:=''千'';
\t 8 :qianwei1:=''亿'';
\t 9 :qianwei1:=''十'';
\t 10:qianwei1:=''佰'';
\t 11:qianwei1:=''千'';
end;
inc(qianwei);
BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}
end;
end;
SmallTOBig:=BigMonth;
end;

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

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读