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

原创 2002年06月06日 09:39:00

根据数字的读法,写了一个把数字转成中文字符串的程序
参数一为数字
参数二为是不是反回人民币大写
参数三为是不是直接读数字,否则带有十百等单位
参数四为设置小数点后面的位数,默认为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 IntegerAs 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) + 11)
           
        
Else
            GetChinaNum 
= GetChinaNum + Mid(numshu, Val(bstr) + 11)
            
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, 11)
        
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) + 11+ 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) + 11)
            
Next i
        
End If
    
End If
End Function

 

 

oracle中如何将字符和数字转成中文

在Oracle数据库开发过程中,经常会遇到汉字和数字组合的字符串,需要处理这样的字符串,比如是否有汉字、显示相同长度数据时对齐等。、 1、判断字符串中是否有中文,length和lengthb函数的应用...
  • afei3418
  • afei3418
  • 2016年01月20日 16:06
  • 1497

关于VB日期与数字的转换(一)

VB中可将日期作为实数的一部分来存储。小数点左边的数值表示日期:小数点右边的数值表示时间。负的数值表示在1899 年 12 月 30 日 之前。所以每一天可以用一个整数来表示(以1899-12-30 ...
  • northwolves
  • northwolves
  • 2005年12月20日 17:27
  • 5117

数字转换成字符串时保留小数位数

数字转换成字符串时保留小数位数float f = 25.12345F;f.ToString("0.00");这样做无论f是不是整数,都将加上2位小数。也可以这样:float f = 25.12345F...
  • tuolingss
  • tuolingss
  • 2011年04月30日 12:47
  • 2534

两种去掉字符串中数字的方法(VB学习 备注)

1、遍历每一个字符进行判断 Public Function DelNumber(ByVal s As String) As String Dim strL As Long Di...
  • ChoasRules
  • ChoasRules
  • 2012年11月02日 11:00
  • 4524

如何将数字转化为字符串

#include #include void itoa(unsigned long val,char *buf,unsigned radix)    {          ...
  • yhf19881015
  • yhf19881015
  • 2013年05月02日 15:44
  • 553

《ios_OC》字符串NSString,数组NSArray,NSNumber数值与字符串的转换

一:字符串NSString (一)不可变字符串NSString:增删查改的实现:     // c语言中字符串是由char(ASCII)字符组成         char sex='1';      ...
  • baidu_30907803
  • baidu_30907803
  • 2015年09月08日 21:18
  • 1563

C里面怎么把字符串转成数字

字符串"123"转成数字123 怎么转? atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include ...
  • wosiwozaiwhy
  • wosiwozaiwhy
  • 2014年10月10日 13:44
  • 1229

iOS数字转汉字

7th,September,2016NSNumberFormatterNSNumberFormatter *nf = [[NSNumberFormatter alloc] init]; nf.numb...
  • Jolie_Yang
  • Jolie_Yang
  • 2016年09月09日 11:15
  • 1428

如何将十六进制字符串转换为数字(数值)

================================================= 本文为khler原作,转载必须确保本文完整并完整保留原作者信息及本文原始链接 E-mail: k...
  • LANGGUANGCHENG
  • LANGGUANGCHENG
  • 2017年11月14日 20:54
  • 224

sql 把字符串转成数字

order by to_number(b.DOWNUM) desc 使用  to_number() 函数!
  • hunhun1122
  • hunhun1122
  • 2017年07月06日 09:30
  • 159
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用VB把数字转成中文字符串
举报原因:
原因补充:

(最多只允许输入30个字)