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;

解决方案 »

  1.   

    function ArabTEnglish(N: DOUBLE): string;
    //PRIV ALL
    const
      WORD1 = 'ZERO ONE  TWO  THREEFOUR FIVE SIX  SEVENEIGHTNINE ';
      WORD2 = 'TEN      ELEVEN   TWELVE   THIRTEEN FOURTEEN FIFTEEN  SIXTEEN  SEVENTEENEIGHTEEN NINETEEN ';
      WORD3 = 'TWENTY THIRTY FORTY  FIFTY  SIXTY  SEVENTYEIGHTY NINETY ';
      WORD4 = '        THOUSANDMILLION BILLION ';var
      S, STAIL, SHEAD: string;
      VT, HEAD, TERM: INTEGER;
      TAIL: DOUBLE;begin //F
      STAIL := 'ONLY';
      Tail := 0;
    {----------------------------------}
      if N <> TRUNC(N) then //不是整数
      begin
        TAIL := (N - TRUNC(N)) * 100;
        if TAIL - TRUNC(TAIL) > 0.001 then TAIL := TRUNC(TAIL) + 1
        else TAIL := TRUNC(TAIL);
        //TAIL:=IIF(TAIL-TRUNC(TAIL)>0.001,TRUNC(TAIL)+1,TRUNC(TAIL));
        if TAIL >= 20 then
        begin
            //S:=TRIM(COPY(WORD3,2,2));
          S := TRIM(COPY(WORD3, TRUNC(TAIL / 9.99) * 7 - 13, 7));
          TAIL := TRUNC(TAIL) mod 10;
          if TAIL > 0.001 then
          begin
            STAIL := TRIM(COPY(WORD1, TRUNC(TAIL * 5 + 1), 5)) + ' ' + STAIL;
            S := TRIM(S) + ' ' + STAIL;
          end
          else
            S := TRIM(S) + ' ' + STAIL;
          STAIL := S;
          S := '';
        end
        else
          if TAIL >= 10 then
            STAIL := TRIM(COPY(WORD2, (TRUNC(TAIL) - 10) * 9 + 1, 9)) + ' ' + STAIL
          else
            STAIL := TRIM(COPY(WORD1, TRUNC(TAIL) * 5 + 1, 5)) + ' ' + STAIL;
        STAIL := 'AND CENTS ' + TrimLeft(STAIL);
      end;
    {------------------------------------------}
      HEAD := TRUNC(N);
      TERM := 0;
      while HEAD > 0 do
      begin
        VT := HEAD mod 1000;
        HEAD := TRUNC(HEAD / 1000);
        if VT > 0 then
          TAIL := TRUNC(VT / 100);
        if TAIL > 0 then
          SHEAD := TRIM(SHEAD) + ' ' + TRIM(COPY(WORD1, TRUNC(TAIL * 5 + 1), 5)) + ' HUNDRED';
        TAIL := VT mod 100;
        if TAIL >= 20 then
        begin
          SHEAD := TRIM(SHEAD) + ' ' + COPY(WORD3, (TRUNC(TAIL / 10) - 2) * 7 + 1, 7);
          TAIL := TRUNC(TAIL) mod 10;
          if TAIL > 0 then
            SHEAD := TRIM(SHEAD) + ' ' + COPY(WORD1, TRUNC(TAIL) * 5 + 1, 5);
        end
        else
          if TAIL >= 10 then
            SHEAD := TRIM(SHEAD) + ' ' + COPY(WORD2, (TRUNC(TAIL) - 10) * 9 + 1, 9)
          else if TAIL > 0 then
            SHEAD := TRIM(SHEAD) + ' ' + COPY(WORD1, TRUNC(TAIL * 5) + 1, 5);
        SHEAD := TRIM(SHEAD) + ' ' + COPY(WORD4, TRUNC(TERM * 8) + 1, 8);
        TERM := TERM + 1;
        S := TRIM(SHEAD) + ' ' + S;
        SHEAD := ''
      end;
      S := TRIM(S) + ' ' + STAIL;
      RESULT := S;
    end; //F