我想将类似123.45的数字字符串转化为“1百2十3点45”,如何实现呀?自己写代码好像很烦,谁能帮我,多多给分呦!

解决方案 »

  1.   

    //////////网友写的/////////////
    function 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);
    begin
    //  sum:=12.34;
      showmessage('人民币大写:'+xTod(strtofloat(edit1.text)));
    end;
      

  2.   

    //////////网友写的/////////////
    unit rmb;interfacefunction NumToUpper(const num:real):string;implementation
    uses SysUtils;function NumToUpper(const num:real):string;
    var aa,bb,cc:string;
        bbb:array[1..16]of string;
        uppna:array[0..9] of string;
        i:integer;
    begin    bbb[1]:='万';
       bbb[2]:='仟';
       bbb[3]:='佰';
       bbb[4]:='拾';
      bbb[5]:='亿';;
      bbb[6]:='仟';;
      bbb[7]:='佰';
      bbb[8]:='拾';
      bbb[9]:='万';
      bbb[10]:='仟';
      bbb[11]:='佰';
      bbb[12]:='拾';
      bbb[13]:='元';
     bbb[14]:='.';
      bbb[15]:='角';
     bbb[16]:='分';
      uppna[1]:='壹';
      uppna[2]:='贰';
      uppna[3]:='叁';
      uppna[4]:='肆';
      uppna[5]:='伍';
      uppna[6]:='陆';
      uppna[7]:='柒';
      uppna[8]:='捌';
      uppna[9]:='玖';
      Str(num:16:2,aa);
      cc:='';
      bb:='';
      result:='';
      for i:=1 to 16 do
        begin
          cc:=aa[i];
          if cc<>' ' then
            begin
             bb:=bbb[i];
              if cc='0' then
                cc:='零'
              else
                begin
                  if cc='.' then
                    begin
                      cc:='';
                      bb:='';
                    end
                  else
                    begin
                      cc:=uppna[StrToInt(cc)];
                    end
                end;
              result:=result+(cc+bb)
            end;
        end;
      result:=result+'正';
    end;end.