人民币金额大小写转换函数

[转帖]人民币金额大小写转换函数
Function NtoC( n0 :Extended) :wideString;
//人民币金额大小写转换函数(如发现更为精简的,请告诉我)
//作者:方小庆(上海) inrm@263.net
  Function IIF(b :boolean; s1,s2 :string):string;
    begin  {本函数在VFP和VB里均为内部函数}
      if b then IIF:=s1 else IIF:=s2;
    end;
  Const c:WideString = '零壹贰叁肆伍陆柒捌玖◇分角元拾佰仟万拾佰仟亿拾佰仟万';
  var L,i,n :integer;
      Z,a :boolean;
      s, st :WideString;
begin
  s:= FormatFloat('0',n0*100);
  L:= Length(s);
  Z:= false;
  For i:=1 to L do
    begin
    n:= ord( s[L-i+1])-48;// StrToInt( s[L-i+1]);
    a:= (i=11)or(i=7)or(i=3)or(i=1);        //亿、万、元、分位
    st:=IIF((n=0)and(Z or a), '', c[n+1])   //数值
      + IIF((n=0)and(i=1),'',             //分位为零
        IIF((n>0)or a, c[i+11], ''))        //单位
      + IIF((n=0)and(not Z)and(i>1)and a,'','') //亿、万、元位为零而千万、千、角位不为零
      + st;
    Z:= n=0;
    end;
  For i:=1 To Length(st) do
    If Copy(st,i,2)='亿万' Then Delete(st,i+1,1); //亿位和万位之间都是零时会出现’亿万’
  result:= IIF(n0>9999999999999.99, '溢出', IIf(n0 = 0, '', st));
End;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值