[经典]将阿拉伯数字转成中文数字字串和将中文字串转成拉伯数字

这是一个包含两个函数的单元,用于将阿拉伯数字转换成中文数字字串(Num2CNum)和将中文数字字串转换成阿拉伯数字(CNum2Num)。函数由Wolfgang Chien编写,支持整数和小数部分的转换,并处理了负数和小数点的情况。
摘要由CSDN通过智能技术生成
来自32位深度历险台湾钱达智先生  
   
  unit   cutils;  
   
  interface  
   
  uses  
  SysUtils;  
   
  function   CNum2Num(sChineseNum:   string;   var   dblArabic:   double):  
boolean;  
  function   Num2CNum(dblArabic:   double):   string;  
   
  implementation  
   
  (*   --------------------------------------------------   *)  
  (*   Num2CNum     将阿拉伯数字转成中文数字字串  
  (*   使用示例:  
  (*       Num2CNum(10002.34)   ==>   一万零二点三四  
  (*  
  (*   Author:   Wolfgang   Chien    
  (*   Date:   1996/08/04  
  (*   Update   Date:  
  (*   --------------------------------------------------   *)  
  function   Num2CNum(dblArabic:   double):   string;  
  const  
      _ChineseNumeric   =   '零一二三四五六七八九';  
  var  
      sArabic:   string;  
      sIntArabic:   string;  
      iPosOfDecimalPoint:   integer;  
      i:   integer;  
      iDigit:   integer;  
      iSection:   integer;  
      sSectionArabic:   string;  
      sSection:   string;  
      bInZero:   boolean;  
      bMinus:   boolean;  
   
      (*   将字串反向,   例如:   传入   '1234',   传回   '4321'   *)  
      function   ConvertStr(const   sBeConvert:   string):   string;  
      var  
          x:   integer;  
      begin  
          Result   :=   '';  
          for   x   :=   Length(sBeConvert)   downto   1   do  
              AppendStr(Result,   sBeConvert[x]);  
      end;   {   of   ConvertStr   }  
  begin  
      Result   :=   '';  
      bInZero   :=   True;  
      sArabic   :=   FloatToStr(dblArabic);   (*   将数字转成阿拉伯数字字串   *)  
      {$ifdef   __Debug}  
      ShowMessage('FloatToStr(dblArabic):   '   +   sArabic);  
      {$endif}  
      if   sArabic[1]   =   '-'   then  
      begin  
          bMinus   :=   True;  
          sArabic   :=   Copy(sArabic,   2,   254);  
      end  
      else  
          bMinus   :=   False;  
      iPosOfDecimalPoint   :=   Pos('.',   sArabic);     (*   取得小数点的位置   *)  
      {$ifdef   __Debug}  
      ShowMessage('Pos(''.'',   sArabic)   '   +  
IntToStr(iPosOfDecimalPoint));  
      {$endif}  
   
      (*   先处理整数的部分   *)  
      if   iPosOfDecimalPoint   =   0   then  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值