金额如何转换为人民币大写

Function  CovMoney(money  :  Double)  :  String;  //小写金额转换成大写金额  
Var  
   sStr,  buf,  sPower,  buf1  :  String;  
   i,  j,  iPosition,  lenth,  iTmp  :  Integer;  
   flag0  :  boolean;  
 
     Function  Sjoin(Var  buff  :  String;  sString  :  String;  digit  :  String;  nextdig  :  String;  iPos  :  Integer)  :  Integer;  
     Var  
         dig  :  String;  //  *  1  
         flag0  :  Boolean;  
     Begin  
         flag0  :=  True;  
 
         If  digit  =  '0'  Then  
             If  nextdig  <>  '0'  Then  
                 dig  :=  '零'  
             Else  
                 flag0  :=  False;  
         If  digit  =  '1'  Then  
             dig  :=  '壹';  
         If  digit  =  '2'  Then  
             dig  :=  '贰';  
         If  digit  =  '3'  Then  
             dig  :=  '叁';  
         If  digit  =  '4'  Then  
             dig  :=  '肆';  
         If  digit  =  '5'  Then  
             dig  :=  '伍';  
         If  digit  =  '6'  Then  
             dig  :=  '陆';  
         If  digit  =  '7'  Then  
             dig  :=  '柒';  
         If  digit  =  '8'  Then  
             dig  :=  '捌';  
         If  digit  =  '9'  Then  
               dig  :=  '玖';  
 
         If  digit  =  '0'  Then  
             If  (flag0  =  True)  And  (iPos  <>  0)  Then  
             Begin  
                 buff  :=  buff  +  dig;  
                 Result  :=  2;  
             End  
             Else  
                 Result  :=  0  
         Else  
         Begin  
             buff  :=  buff  +  dig;  
             buff  :=  buff  +  sString;  
             Result  :=  4;  
         End;  
     End;  
Begin  
   If  money  =  0  Then  
   Begin  
       Result  :=  '零元整';  
       exit;  
   End;  
   iPosition  :=  0;  
   buf1  :=  trim(Format('%12.2f',  [money]));  
 
   lenth  :=  Length(buf1);  
   buf  :=  '                                ';  //    16  bit  space;  
   j  :=  1;  
   For  i  :=  16  -  lenth  To  15  Do  
   Begin  
       buf[i]  :=  buf1[j];  
       j  :=  j  +  1;  
   End;  
 
   For  i  :=  1  To  15  Do  
   Begin  
       iTmp  :=  ord(buf[i]);  
       If  ((iTmp  >=  49)  And  (iTmp  <=  58))  Or  (chr(iTmp)  =  ',')  Then  
           break;  
   End;  
   While  i  <=  15  Do  
   Begin  
       flag0  :=  True;  
       iTmp  :=  0;  
       Case  i  -  1  Of  
           0,  4,  8  :  sPower  :=  '仟';  
           1,  5,  9  :  sPower  :=  '佰';  
           2,  6,  10  :  sPower  :=  '拾';  
           3  :  
               Begin  
                   sPower  :=  '亿';  
                   If  copy(buf,  i,  1)  =  '0'  Then  
                   Begin  
                       sStr  :=  sStr  +  sPower+'零';  
                       iPosition  :=  iPosition  +  2;  
                       iTmp  :=  1;  
                   End;  
               End;  
           7  :  
               Begin  
                   sPower  :=  '万';  
                   If  copy(buf,  i,  1)  =  '0'  Then  
                   Begin  
                       sStr  :=  sStr  +  sPower+'零';  
                       iPosition  :=  iPosition  +  2;  
                       iTmp  :=  1;  
                   End;  
               End;  
           11  :  
               Begin  
                   sPower  :=  '元';  
                   If  (copy(buf,  i,  1)  =  '0')  And  (iPosition  <>  0)  Then  
                   Begin  
                       sStr  :=  sStr  +  sPower;  
                       iPosition  :=  iPosition  +  2;  
                       iTmp  :=  1;  
                   End;  
               End;  
           12  :  
               Begin  
                   flag0  :=  False;  
                   If  (copy(buf,  i  +  1,  1)  =  '0')  And  (copy(buf,  i  +  2,  1)  =  '0')  Then  
                   Begin  
                       sPower  :=  '整';  
                       sStr  :=  sStr  +  sPower;  
                       iPosition  :=  iPosition  +  2;  
                       iTmp  :=  2;  
                   End;  
               End;  
           13  :  sPower  :=  '角';  
           14  :  
               Begin  
                   If  copy(buf,  i,  1)  =  '0'  Then  iTmp  :=  2;  
                   sPower  :=  '分';  
               End;  
       End;  
       If  (flag0  =  True)  And  (iTmp  =  0)  Then  
           Begin  
               If  i  >  0  Then  
                   iPosition  :=  iPosition  +  Sjoin(sStr,  sPower,  copy(buf,  i,  1),  copy(buf,  i  +  1,  1),  iPosition)  
               Else  
                   iPosition  :=  iPosition  +  Sjoin(sStr,  sPower,  copy(buf,  i,  1),  copy(buf,  i,  1),  iPosition);  
           End;  
       If  iTmp  =  2  Then  
           break  
       Else  
           i  :=  i  +  1;  
   End;  
//    If  (ilength  <>  0)  Then  ilength  :=  iPosition;  
   If  pos('整',  sStr)  <  1  then  
   begin  
     if  (pos('角',  sStr)  <  1)  and  (pos('分',  sStr)  <  1)  Then  
         sStr  :=  sStr  +  '整';  
   end;  
       sStr  :=stringreplace(sStr,'零零','零',[rfReplaceAll]);  
       sStr  :=stringreplace(sStr,'零元','元',[rfReplaceAll]);  
       Result  :=  Trim(sStr);  
End;  
 
   
正确填写票据和结算凭证的基本规定  
 
       银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,  
直接关系到支付结算的准确、及时和安全。票据和结算凭证是银行、单位和个人凭以记载账  
务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。因此,填写票据和结算凭  
证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止  
涂改。  
       一、中文大写金额数字应用正楷或行书填写,如壹(壹)、贰(贰)、叁、肆(肆)、  
伍(伍)、陆(陆)、柒、捌、玖、拾、佰、仟、万(万)、亿、元、角、分、零、整(  
正)等字样。不得用一、二(两)、三、四、五、六、七、八、九、十、念、毛、另(或0)  
填写,不得自造简化字。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值