五维思考

学习要加,骄傲要减,机会要乘,懒惰要除。 http://www.5dthink.cn

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1. function MoneyToUpper(const NumBer: Double): string;
  2. var StrNumber, AUpperNum, AMoneyUnit: string;
  3.   UpperNum: array[0..9of string;
  4.   MoneyUnit: array[1..16of 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: 162, 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) - 12) = '零'then
  54.           result := copy(result, 1, Length(result) - 2);
  55.         case I of
  56.           1..46..810..12begin //   万,仟,佰,拾
  57.               AUpperNum := '零';
  58.               AMoneyUnit := '';
  59.             end;
  60.           5913begin //   亿,万,元
  61.               if StrToFloat(StrNumber) < 1 then AMoneyUnit := '';
  62.               AUpperNum := '';
  63.             end;
  64.           15begin //   角
  65.               if StrToFloat(StrNumber) < 1 then AUpperNum := ''
  66.               else AUpperNum := '零';
  67.               AMoneyUnit := '';
  68.             end;
  69.           16begin //   分
  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;
posted on 2008-10-15 19:30  五维思考  阅读(238)  评论(0编辑  收藏  举报

QQ群:1. 全栈码农【346906288】2. VBA/VSTO【2660245】