function SmallTOBig(small:real):string; var SmallMonth,BigMonth:string; wei1,LastWei1,qianwei1:string[2]; wei,qianwei,dianweizhi,qian:integer; begin LastWei1:='零'; {------- 修改参数令值更精确 -------} {小数点后的位数,需要的话也可以改动该值} 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; //case {判断大写位置,可以继续增大到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; //case inc(qianwei); if qianwei mod 4 =1 then begin BigMonth :=qianwei1+BigMonth;{组合成大写金额} LastWei1:='零'; end; if Wei1<>'零' then begin if qianwei mod 4 = 1 then BigMonth :=wei1+BigMonth{组合成大写金额} else BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额} end else if LastWei1<>'零' then BigMonth :=wei1+BigMonth;{组合成大写金额} LastWei1:=Wei1; end; //if qian<>dianweizhi then end; //for qian:=length(Smallmonth) downto 1 do SmallTOBig:=BigMonth; end; //Function
谢谢 不过我想要类似于这种格式的:X [万] X [千] 壹 [百] 贰 [拾] 捌 [元] 伍 [角] 贰 [分] 高位没有的自动加 "X" 谢指教,谢谢谢....
var SmallMonth,BigMonth:string;
wei1,LastWei1,qianwei1:string[2];
wei,qianwei,dianweizhi,qian:integer;
begin
LastWei1:='零';
{------- 修改参数令值更精确 -------}
{小数点后的位数,需要的话也可以改动该值}
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; //case
{判断大写位置,可以继续增大到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; //case
inc(qianwei);
if qianwei mod 4 =1 then
begin
BigMonth :=qianwei1+BigMonth;{组合成大写金额}
LastWei1:='零';
end;
if Wei1<>'零' then
begin
if qianwei mod 4 = 1 then
BigMonth :=wei1+BigMonth{组合成大写金额}
else
BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}
end
else
if LastWei1<>'零' then
BigMonth :=wei1+BigMonth;{组合成大写金额}
LastWei1:=Wei1;
end; //if qian<>dianweizhi then end; //for qian:=length(Smallmonth) downto 1 do SmallTOBig:=BigMonth; end; //Function
不过我想要类似于这种格式的:X [万] X [千] 壹 [百] 贰 [拾] 捌 [元] 伍 [角] 贰 [分]
高位没有的自动加 "X"
谢指教,谢谢谢....