+ -
当前位置:首页 → 问答吧 → 如何将数字小写转换为大写

如何将数字小写转换为大写

时间:2011-11-09

来源:互联网

delphi 如何将 例如:4940转换成肆仟玖佰肆拾,后面不能跟着有零或者其他的元整之类...就是好像说是70000 就是转换为柒万这样。

作者: cyf0719   发布时间: 2011-11-09

我记得有公式的说

用 mod 取余数 然后填进去.
Delphi(Pascal) code


4940 div 1000 = 4 -> 肆仟

4940 mod 1000 = 940 div 100 = 9 ->玖佰





作者: warrially   发布时间: 2011-11-09

这.........没有现成的代码,不过LS的思路是对的从后往前取余然后用文本替换数字

作者: funxu   发布时间: 2011-11-09

上面的思路可以,主要要注意处理类似 4904的写法 :肆仟玖佰零肆

下面有个现成的,不过没有测试。

http://www.cnblogs.com/newtekboy/archive/2010/05/23/1742088.html

作者: onlyou13   发布时间: 2011-11-09

这个好像更简洁
Delphi(Pascal) code
function MoneyConvert(mmje:real): 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;

作者: onlyou13   发布时间: 2011-11-09

http://topic.csdn.net/t/20011218/10/427440.html

http://topic.csdn.net/t/20020622/13/822698.html

http://topic.csdn.net/t/20020325/10/597619.html

《程序开发范例宝典》第742页


作者: shijies   发布时间: 2011-11-09