123---》壹佰贰拾叁元
123.5--》壹佰贰拾叁元伍角
1234---》壹千贰佰叁拾肆元
1234.5---》壹千贰佰叁拾肆元伍角

解决方案 »

  1.   

    给你个完整的人民币数字转换成大写的函数.
    Function ReadRMB(F:Real):WideString;
      Var ZeroFlag:Boolean;
          STemp:String;
          SStr:String;
          I,N,X:Byte;
      Const
           Str2:Array[1..11] Of String=('分','角','元','拾','佰','仟','万','拾','佰','仟','亿');
      Begin
           ZeroFlag:=True;       F:=F*100;
           SStr:=FormatFloat('0',F);
           N:=Length(SStr);       STemp:='';       For I:=N DownTo 1 Do
           Begin
                If SStr[I]<>'0' Then
                Begin
                     If SStr[I]='1' Then
                        STemp:='壹'+Str2[N-I+1]+STemp
                     Else If SStr[I]='2' Then
                          STemp:='贰'+Str2[N-I+1]+STemp
                     Else If SStr[I]='3' Then
                          STemp:='叁'+Str2[N-I+1]+STemp
                     Else If SStr[I]='4' Then
                          STemp:='肆'+Str2[N-I+1]+STemp
                     Else If SStr[I]='5' Then
                          STemp:='伍'+Str2[N-I+1]+STemp
                     Else If SStr[I]='6' Then
                          STemp:='陆'+Str2[N-I+1]+STemp
                     Else If SStr[I]='7' Then
                          STemp:='柒'+Str2[N-I+1]+STemp
                     Else If SStr[I]='8' Then
                          STemp:='捌'+Str2[N-I+1]+STemp
                     Else If SStr[I]='9' Then
                          STemp:='玖'+Str2[N-I+1]+STemp;                 If ZeroFlag Then
                        ZeroFlag:=False;
                End
                Else
                Begin
                     X:=N-I+1;
                     If Not ZeroFlag Then
                     Begin
                          STemp:='零'+STemp;
                          ZeroFlag:=True;
                     End;
                     If ((X=3) Or (X=7) Or (X=11)) Then
                        STemp:=Str2[X]+STemp;
                End;
           End;
           If Stemp<>'' Then
              STemp:=STemp+'整'
           Else
               Stemp:='零元整';       ReadRMB:=STemp;
      end;
      

  2.   

    function NumToChar(NumStr: String): String;
    const
         BigPerChar:array[0..1] of String=('万','亿');
    var
         l:Integer;
    function SmallNumToChar(NumStr: String): String;
    const
         BigChar:array[0..9] of String=('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
         BigPerChar:array[0..3] of String=('','拾','佰','仟');
    var
         rl,l,i:Integer;
    begin
         Result:='';
         l:=Length(NumStr);
         for i:=0 to l-1 do
         begin
              if NumStr[i]<>'0' then
              begin
                   Result:=Result+BigChar[StrToInt(NumStr[i+1])]
              end
              else
              begin
                   if (NumStr[i+1]<>'0') then
                   begin
                        Result:=Result+BigChar[StrToInt(NumStr[i+1])]
                   end
              end;
              if (NumStr[i+1]<>'0') then Result:=Result+BigPerChar[l-i-1];
         end;
         rl:=Length(Result);
         if Copy(Result,rl-1,2)=BigChar[0] then Result:=Copy(Result,1,rl-2);
    end;
    begin
         Result:='';
         NumStr:=Trim(NumStr)+'.';
         NumStr:=Copy(NumStr,1,Pos('.',NumStr)-1);
         if NumStr<>'' then
         begin
              l:=Length(NumStr);
              if l>8 then
              begin
                   Result:=SmallNumToChar(Copy(NumStr,1,l-8))+BigPerChar[1];
                   NumStr:=Copy(NumStr,l-8+1,8);
                   l:=8;
              end;
              if l>4 then
              begin
                   Result:=Result+SmallNumToChar(Copy(NumStr,1,l-4))+BigPerChar[0];
                   NumStr:=Copy(NumStr,l-4+1,4);
                   l:=4;
              end;
              Result:=Result+SmallNumToChar(Copy(NumStr,1,l));
         end;end;
    调用例子: ShowMessage(NumToChar('120043302'));