Delphi里金额大小写转换的函数

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2011-02-18 22:40:51

function NumToChar(const n: Real): string;
// 可以到万亿 , 并且可以随便扩大范围
const
  cNum: WideString = '零壹贰叁肆伍陆柒捌玖--万仟佰拾亿仟佰拾万仟佰拾元角分';
  cCha: array [0 .. 1, 0 .. 12] of string = (('零元', '零拾', '零佰', '零仟', '零万',
      '零亿', '亿万', '零零零', '零零', '零万', '零亿', '亿万', '零元'),
    ('元', '零', '零', '零', '万', '亿', '亿', '零', '零', '万', '亿', '亿', '元'));
var
  i: Integer;
  sNum, sTemp: WideString;
begin
  result := '';
  sNum := format('%15d', [round(n * 100)]);
  for i := 0 to 14 do
  begin
    sTemp := copy(sNum, i + 1, 1);
    if sTemp = ' ' then
      continue
    else
      result := result + cNum[strtoint(sTemp) + 1] + cNum[i + 13];
  end;
  for i := 0 to 12 do
    result := StringReplace(result, cCha[0, i], cCha[1, i], [rfReplaceAll]);
  if pos('零分', result) = 0 then
    result := StringReplace(result, '零角', '零', [rfReplaceAll])
  else
    result := StringReplace(result, '零角', '整', [rfReplaceAll]);
  result := StringReplace(result, '零分', '', [rfReplaceAll]);
end;

function Changdx2(mmje: Double): String;
const
  s1: String = '零壹贰叁肆伍陆柒捌玖';
  s2: String = '分角元拾佰仟万拾佰仟亿拾佰仟万';
  function StrTran(const S, s1, s2: String): String;
  begin
    result := StringReplace(S, s1, s2, [rfReplaceAll]);
  end;

var
  S, dx: String;
  i, Len: Integer;
begin
  if mmje < 0 then
  begin
    dx := '负';
    mmje := -mmje;
  end;
  S := format('%.0f', [mmje * 100]);
  Len := Length(S);
  for i := 1 to Len do
    dx := dx + copy(s1, (Ord(S[i]) - Ord('0')) * 2 + 1, 2) + copy(s2,
      (Len - i) * 2 + 1, 2);
  dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零仟', '零'), '零佰', '零'),
        '零拾', '零'), '零角', '零'), '零分', '整');
  dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零零', '零'), '零零', '零'),
        '零亿', '亿'), '零万', '万'), '零元', '元');
  if dx = '整' then
    result := '零元整'
  else
    result := StrTran(StrTran(dx, '亿万', '亿零'), '零整', '整');
end;

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

广告位置B