最精简的小写金额转大写的函数

.测试通过了。

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 ; 

2.这个我没有测试

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 ; 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值