function TForm1.xTOd(i:Real):string; 
const 
  d='零壹贰叁肆伍陆柒捌玖分角元拾佰仟万拾佰仟亿'; 
var 
  m,k:string; 
  j:integer; 
begin 
  k:=''; 
  m:=floattostr(int(i*100)); 
  for j:=length(m) downto 1 do 
    k:=k+d[(strtoint(m[Length(m)-j+1])+1)*2-1]+ 
      d[(strtoint(m[Length(m)-j+1])+1)*2]+d[(10+j)*2-1]+d[(10+j)*2]; 
  xTOd:=k; 
end; 调用: 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  Sum:real; 
begin 
  sum:=12.34; 
  showmessage('人民币大写:'+xTOd(Sum)); 
end;

解决方案 »

  1.   

    qhdsfh(飞翔的鹰),谢谢你的回复,在你的代码中如何修改一下,就能达到不出现后几位数零,例如1:sum:=600; 时,就出现人民币陆佰元,而不出现陆佰零拾零元零角零分;例如2:sum:=1009;时,就出现壹仟零玖元,而不出现壹仟零佰零拾玖元零角零分。
    function TForm1.xTOd(i:Real):string; 
    const 
      d='零壹贰叁肆伍陆柒捌玖分角元拾佰仟万拾佰仟亿'; 
    var 
      m,k:string; 
      j:integer; 
    begin 
      k:=''; 
      m:=floattostr(int(i*100)); 
      for j:=length(m) downto 1 do 
        k:=k+d[(strtoint(m[Length(m)-j+1])+1)*2-1]+ 
          d[(strtoint(m[Length(m)-j+1])+1)*2]+d[(10+j)*2-1]+d[(10+j)*2]; 
      xTOd:=k; 
    end; 调用: 
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
      Sum:real; 
    begin 
      sum:=12.34; 
      showmessage('人民币大写:'+xTOd(Sum)); 
    end;