如果读法不考究可以先乘以100,再取整,将其itoa(),
然后挨个处理
你的数字设为 num[80];
int length= strlen(num);
for(i=0;i<length;i++)
{
switch (num[i])
{
case '0' :if(i<3){write("零");}break;
case '1' : write("壹");break;
。 }
if(num[i]>'0')
{
switch(i){
case 3 : write('点');break;
case 4 : write('拾'):break;
case 5 : write('百');break;
......
}
}}行吗?
然后挨个处理
你的数字设为 num[80];
int length= strlen(num);
for(i=0;i<length;i++)
{
switch (num[i])
{
case '0' :if(i<3){write("零");}break;
case '1' : write("壹");break;
。 }
if(num[i]>'0')
{
switch(i){
case 3 : write('点');break;
case 4 : write('拾'):break;
case 5 : write('百');break;
......
}
}}行吗?
function Tform1.SmallTOBig(small:real):string;
var SmallMonth,BigMonth:string;
wei1,qianwei1:string[2];
wei,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
1:wei1:='壹'; 2:wei1:='贰';
3:wei1:='叁'; 4:wei1:='肆';
5:wei1:='伍'; 6:wei1:='陆';
7:wei1:='柒'; 8: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);”他自动默认小数点后两位