比如:USD 7388.55转换后应该是:U.S.DOLLARS  SEVEN  THOUSAND  THREE  HUNDRED  AND  EIGHTY - EIGHT  AND  FIFTY-FIVE  ONLY

解决方案 »

  1.   

    const Eng:array[0..30] of string =('','ONE','TWO','THREE','FOUR','FIVE','SIX','SEVEN','EIGHT','NINE','TEN',
                    'ELEVEN','TWELVE','THIRTEEN','FOURTEEN','FIFTEEN','SIXTEEN','SEVENTEEN','EITHTEEN','NINETEEN',
                    'TWENTY','THIRTY','FORTY','FIFTY','SIXTY','SEVENTY','EIGHTY','NINETY','HUNDRED','THOUSAND','MILLION');function NumtoEng(Small:Double): string;
    var str,str1,str2,str3:string;
        len,I,J:integer;
    begin
      str1:=formatfloat('0',small-frac(small));
      len:=length(str1);
      if len>9 then exit;
      i:=len-2;
      str2:=rightstr(str1,2);
      str1:=copy(str1,1,i);
      J:=0;
      str3:='';
      str:='';
      while length(str2)>0 do
      begin
        str3:='';
        if j=0 then
        begin
          if strtoint(str2)<21 then str3:=eng[strtoint(str2)]
          else str3:=eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
          J:=J+28;
          str2:=rightstr(str1,1);
          I:=I-1;
          str1:=copy(str1,1,I);
        end
        else if (J=28) then
        begin
          str3:=eng[strtoint(leftstr(str2,1))];
          if str3<>'' then str3:=str3+' '+eng[J];
          J:=J+1;
          str2:=rightstr(str1,3);
          I:=I-3;
          str1:=copy(str1,1,I);
        end
        else if (J=29) then
        begin
          if strtoint(str2)>100 then
          begin
            str3:=eng[strtoint(leftstr(str2,1))]+' '+eng[28];
            str2:=rightstr(str2,2);
          end;
          if strtoint(str2)<21 then str3:=str3+' '+eng[strtoint(str2)]
          else str3:=str3+' '+eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
          if trim(str3)<>'' then str3:=str3+' '+eng[29];
          J:=J+1;
          str2:=rightstr(str1,3);
          I:=I-3;
          str1:=copy(str1,1,I);
        end
        else if (J=30) then
        begin
          if strtoint(str2)>100 then
          begin
            str3:=eng[strtoint(leftstr(str2,1))]+' '+eng[28];
            str2:=rightstr(str2,2);
          end;
          if strtoint(str2)<21 then str3:=str3+' '+eng[strtoint(str2)]
          else str3:=str3+' '+eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
          if trim(str3)<>'' then str3:=trim(str3)+' '+eng[30];
          str2:='';
        end;
        str:=trim(str3)+' '+trim(str);
      end;
      str2:=formatfloat('0',frac(small)*100);
      if strtoint(str2)<21 then str3:=eng[strtoint(str2)]
          else str3:=eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
      if trim(str3)<>'' then str3:='CENTS '+str3;
      if trim(str3)<>'' then str:=str+' AND '+trim(str3);
      result:=str;
    end;