用VB把数字转成中文字符串

根据数字的读法,写了一个把数字转成中文字符串的程序
参数一为数字
参数二为是不是反回人民币大写
参数三为是不是直接读数字,否则带有十百等单位
参数四为设置小数点后面的位数,默认为4
使用方法是
t=GetChinaNum(20005.000436, , , 7)'返回 “二千零五点零零零四三六”
t=GetChinaNum(2005.436, True, , 7)'返回“贰仟零伍元肆角肆分”
t=GetChinaNum(2005.436, , True, 7)'返加“二零零五点四三六”

下面是程序代码

Function  GetChinaNum(otherNum  As   Double , Optional isRMB  As   Boolean , Optional numOption  As   Boolean , Optional dotNum  As   Integer As   String
    
On   Error   Resume   Next
    num 
=   Trim (Str( Int (otherNum)))
   
    
If  isRMB  Then
        numwei 
=   " 拾佰仟万拾佰仟亿拾佰仟 "
        numshu 
=   " 零壹贰叁肆伍陆柒捌玖拾 "
    
Else
        numwei 
=   " 十百千万十百千亿十百千 "
        numshu 
=   " 零一二三四五六七八九十 "
    
End   If
    
If  otherNum  <   20   And  otherNum  >=   10   Then
        num 
=   Right (num,  1 )
        GetChinaNum 
=   Left (numwei,  1 )
    
End   If
    
For  i  =   1   To   Len (num)
        bstr 
=   Mid (num, i,  1 )
        
If  numOption  Then
            GetChinaNum 
=  GetChinaNum  +   Mid (numshu, Val(bstr)  +   1 1 )
           
        
Else
            GetChinaNum 
=  GetChinaNum  +   Mid (numshu, Val(bstr)  +   1 1 )
            
If  bstr  =   " 0 "   Then
                
If   Mid (numwei,  Len (num)  -  i,  1 =   " "   Or   Mid (numwei,  Len (num)  -  i,  1 =   " 亿 "   Then
                    
Do   While   Right (GetChinaNum,  1 =   " "
                        GetChinaNum 
=   Left (GetChinaNum,  Len (GetChinaNum)  -   1 )
                    
Loop
                    GetChinaNum 
=  GetChinaNum  +   Mid (numwei,  Len (num)  -  i,  1 )
                
End   If
               
            
Else

                GetChinaNum 
=  GetChinaNum  +   Mid (numwei,  Len (num)  -  i,  1 )
            
End   If
            GetChinaNum 
=   Replace (GetChinaNum,  " 零零 " " " )
        
End   If
    
Next  i
    
If  numOption  =   False   Then
        
Do   While   Right (GetChinaNum,  1 =   " "
            GetChinaNum 
=   Left (GetChinaNum,  Len (GetChinaNum)  -   1 )
        
Loop
    
End   If
    
If  isRMB  Then
        numrmb 
=   " 元角分 "
        GetChinaNum 
=  GetChinaNum  +   Mid (numrmb,  1 1 )
        
If  Val(num)  <>  otherNum  Then
            num 
=   Trim (Str( Round (otherNum  -  Val(num),  2 )))
            
For  i  =   2   To   Len (num)
                bstr 
=   Mid (num, i,  1 )
                GetChinaNum 
=  GetChinaNum  +   Mid (numshu, Val(bstr)  +   1 1 +   Mid (numrmb, i,  1 )
            
Next  i
        
Else
            GetChinaNum 
=  GetChinaNum  +   " "
        
End   If
    
Else
        
If  Val(num)  <>  otherNum  Then
            
If  dotNum  =   0   Then  dotNum  =   4
            num 
=   Trim ( CStr ( Round (otherNum  -  Val(num), dotNum)))
            
If  GetChinaNum  =   ""   Then  GetChinaNum  =   " "
            GetChinaNum 
=  GetChinaNum  +   " "
            
For  i  =   2   To   Len (num)
                bstr 
=   Mid (num, i,  1 )
                GetChinaNum 
=  GetChinaNum  +   Mid (numshu, Val(bstr)  +   1 1 )
            
Next  i
        
End   If
    
End   If
End Function

 

 

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

thinkeasy

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值