what your mean?
¥123.00 trans 壹佰贰拾叁元整?

解决方案 »

  1.   

    我曾经做过:
      算法大致为:
        例数:123456789.12
        整数部分:从个位开始,每四位一组,即 1,2345,6789三组。              每组的单位从低到高单位为' ','万','亿'。
                      1亿,2345万, 6789              每组内部从低到高单位为:' ','拾','佰','仟'。
                      1,2仟3佰4拾5,6仟7佰8拾9          零的处理:
                  每组的内部,最低位为零的话(包括连续多个零)则删除该零,
                  如果是中间话,不论多少个零都缩为1个零。
                  例如: 10->1
                         1000->1
                         101->101
                         1001->101
                         100001->101
                 注意:以上变化时,要保持组内的单位不变,
        小数部分:.12
                 由于是金额,小数部分一般只有两位,可以直接处理。     
      

  2.   

    自己写一个函数了(s='123.00')
    1、¥123.00 如果不是字符串,先将他转化为字符串;
       string M[5]={'元','拾','佰','仟','万','亿'}
       string N[2]={'零','角','份'}
       string HS,Hnum;2、根据字符串操作处理:
       len:=length(s);
       dot:=ansipos('.',s);//小数点位置
       HS:='';
    for i:=1 to len do
      begin
       num[i]:=copy(s,i,1);//分离数字
       case num[i] of
       '1':Hnum:='壹';
       '2':……
       ……
        
       if (dot>i)
            HS:=HS+Hnum+M[dot-i]
       else
       begin
         //这一段自己写吧;
       end; 
      end;
      

  3.   

    wescom得很对
    得按四个分组!
      

  4.   

    我作了一个DELPHI的此功能控件 如果需要和我联系
      

  5.   

    财务软件中总少不了大写的金额表示方式,如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它却几乎可以无限制的转换,只要你能读得出来和写得进去:
    function Tform1.SmallTOBig(small:real):string;
    var SmallMonth,BigMonth:string;
    wei1,qianwei1:string[2];
    wei,qianwei,dianweizhi,qian:integer;
    begin
    {------- 修改参数令值更精确 -------}
    {小数点后的位数,需要的话也可以改动该值}
    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)) of1:wei1:='壹'; 2:wei1:='贰';
    3:wei1:='叁'; 4:wei1:='肆';
    5:wei1:='伍'; 6:wei1:='陆';
    7:wei1:='柒'; 8:wei1:='捌';
    9:wei1:='玖'; 0: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);”他自动默认小数点后两位
      

  6.   

    用一个字符串,定义好亿千百拾万千百拾元角分,然后将数字按字符串处理,当然最好是先处理好整数,从个位数开始,使用 以下示意代码    strm:='';
        i:=s2[1]+s2[2]+s2[3]+s2[4]+s2[5];
        strq:='零壹贰叁肆伍陆柒捌玖拾';
        strx:='拾万仟佰拾元角分';
        for k:=1 to 8 do
          begin
            j:=i mod 10 ;
    //      textout(intz[9-k],lh,copy(strq,j*2+1,2));
            if i>0 then
              strm:=copy(strq,j*2+1,2)+copy(strx,(8-k)*2+1,2)+strm;
            i:=i div 10;
          end;        textout(sp[7]-40,lh,formatfloat('####0.00',(s2[1]+s2[2]+s2[3]+s2[4]+s2[5])/100.0));
            textout(sp[3],lh,strm);
        end;
    以上是我做的程序中的一段源码