连俞涵吴慷仁新戏:小写金额转换为大写

来源:百度文库 编辑:中财网 时间:2024/05/01 01:00:09

小写金额转换为大写

分类: Delphi 2008-10-15 19:30 67人阅读 评论(0) 收藏 举报
  1. function MoneyToUpper(const NumBer: Double): string;
  2. var StrNumber, AUpperNum, AMoneyUnit: string;
  3.   UpperNum: array[0..9] of string;
  4.   MoneyUnit: array[1..16] of string;
  5.   I: Integer;
  6.   AZero: Boolean;
  7.   N: Double;
  8. begin
  9.   UpperNum[1] := '壹';
  10.   UpperNum[2] := '贰';
  11.   UpperNum[3] := '叁';
  12.   UpperNum[4] := '肆';
  13.   UpperNum[5] := '伍';
  14.   UpperNum[6] := '陆';
  15.   UpperNum[7] := '柒';
  16.   UpperNum[8] := '捌';
  17.   UpperNum[9] := '玖';
  18.   MoneyUnit[1] := '万';
  19.   MoneyUnit[2] := '仟';
  20.   MoneyUnit[3] := '佰';
  21.   MoneyUnit[4] := '拾';
  22.   MoneyUnit[5] := '亿';
  23.   MoneyUnit[6] := '仟';
  24.   MoneyUnit[7] := '佰';
  25.   MoneyUnit[8] := '拾';
  26.   MoneyUnit[9] := '万';
  27.   MoneyUnit[10] := '仟';
  28.   MoneyUnit[11] := '佰';
  29.   MoneyUnit[12] := '拾';
  30.   MoneyUnit[13] := '元';
  31.   MoneyUnit[14] := '.';
  32.   MoneyUnit[15] := '角';
  33.   MoneyUnit[16] := '分';
  34.   AZero := False;
  35.   AUpperNum := '';
  36.   AMoneyUnit := '';
  37.   result := '';
  38.   if NumBer < 0 then
  39.   begin
  40.     result := '负';
  41.     N := -NumBer;
  42.   end
  43.   else
  44.     N := NumBer;
  45.   Str(N: 16: 2, StrNumber);
  46.   for I := 1 to 16 do
  47.   begin
  48.     if StrNumber[I] <> '   ' then
  49.     begin
  50.       AMoneyUnit := MoneyUnit[I];
  51.       if StrNumber[I] = '0' then
  52.       begin
  53.         if AZero and (copy(result, Length(result) - 1, 2) = '零') then
  54.           result := copy(result, 1, Length(result) - 2);
  55.         case I of
  56.           1..4, 6..8, 10..12: begin //   万,仟,佰,拾
  57.               AUpperNum := '零';
  58.               AMoneyUnit := '';
  59.             end;
  60.           5, 9, 13: begin //   亿,万,元
  61.               if StrToFloat(StrNumber) < 1 then AMoneyUnit := '';
  62.               AUpperNum := '';
  63.             end;
  64.           15: begin //   角
  65.               if StrToFloat(StrNumber) < 1 then AUpperNum := ''
  66.               else AUpperNum := '零';
  67.               AMoneyUnit := '';
  68.             end;
  69.           16: begin //   分
  70.               AUpperNum := '';
  71.               AMoneyUnit := '';
  72.             end;
  73.         end;
  74.         AZero := True;
  75.       end
  76.       else
  77.       begin
  78.         if StrNumber[I] = '.' then
  79.         begin
  80.           AUpperNum := '';
  81.           AMoneyUnit := '';
  82.         end
  83.         else
  84.         begin
  85.           AZero := False;
  86.           AUpperNum := UpperNum[StrToInt(StrNumber[I])];
  87.         end
  88.       end;
  89.       result := result + (AUpperNum + AMoneyUnit)
  90.     end;
  91.   end;
  92.   result := result + '整';
  93. end;