大写的金额转换问题

在网上找到一个大写的金额的函数,加到自己的程序中后出现这样的错误:转换出来的大写金额总是大壹万倍,不知错在哪里,请大家给看看。

运行环境win2003,VB.Net

代码如下:TB_X和TB_H都是textbox组件,

?

Dim a = TB_X.Text '要转换成大写的金额
??????? Dim atoc '转换之后的值
??????? Dim String1 '如下定义
??????? Dim String2 '如下定义
??????? Dim String3 '从原A值中取出的值
??????? Dim I '循环变量
??????? Dim J 'A的值乘以100的字符串长度
??????? Dim Ch1 '数字的汉语读法
??????? Dim Ch2 '数字位的汉字读法
??????? Dim nZero '用来计算连续的零值是几个

??????? String1 = "零壹贰叁肆伍陆柒捌玖"
??????? String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"
??????? nZero = 0

??????? If InStr(1, CStr(a * 100), ".") <> 0 Then
??????????? Err.Raise(5000, , "此函数( AtoC() )只能转换小数点后有两位以内的数!")
??????? End If

??????? J = Len(CStr(a * 100))
??????? String2 = Right(String2, J)? '取出对应位数的STRING2的值 ///这一行调试时提示出错

??????? For I = 1 To J
??????????? String3 = Mid(a * 100, I, 1) '取出需转换的某一位的值

??????????? If I <> (J - 3) + 1 And I <> (J - 7) + 1 And I <> (J - 11) + 1 And I <> (J - 15) + 1 Then
??????????????? If String3 = 0 Then
??????????????????? Ch1 = ""
??????????????????? Ch2 = ""
??????????????????? nZero = nZero + 1
??????????????? ElseIf String3 <> 0 And nZero <> 0 Then
??????????????????? Ch1 = "零" & Mid(String1, CLng(String3) + 1, 1)
??????????????????? Ch2 = Mid(String2, I, 1)
??????????????????? nZero = 0
??????????????? Else
??????????????????? Ch1 = Mid(String1, CLng(String3) + 1, 1)
??????????????????? Ch2 = Mid(String2, I, 1)
??????????????????? nZero = 0
??????????????? End If
??????????? Else '该位是万亿,亿,万,元位等关键位
??????????????? If String3 <> 0 And nZero <> 0 Then
??????????????????? Ch1 = "零" & Mid(String1, CLng(String3) + 1, 1)
??????????????????? Ch2 = Mid(String2, I, 1)
??????????????????? nZero = 0
??????????????? ElseIf String3 <> 0 And nZero = 0 Then
??????????????????? Ch1 = Mid(String1, CLng(String3) + 1, 1)
??????????????????? Ch2 = Mid(String2, I, 1)
??????????????????? nZero = 0
??????????????? ElseIf String3 = 0 And nZero >= 3 Then
??????????????????? Ch1 = ""
??????????????????? Ch2 = ""
??????????????????? nZero = nZero + 1
??????????????? Else
??????????????????? Ch1 = ""
??????????????????? Ch2 = Mid(String2, I, 1)
??????????????????? nZero = nZero + 1
??????????????? End If

??????????????? If I = (J - 11) + 1 Or I = (J - 3) + 1 Then '如果该位是亿位或元位,则必须写上
??????????????????? Ch2 = Mid(String2, I, 1)
??????????????? End If

??????????? End If
??????????? atoc = atoc & Ch1 & Ch2

??????????? If I = J And String3 = 0 Then '最后一位(分)为0时,加上“整”
??????????????? atoc = atoc & "整"
??????????? End If

??????? Next
??????? If a = 0 Then
??????????? atoc = "零元整"
??????? End If
??????? TB_H.Text = atoc
??? End Sub

阅读更多
文章标签: string vb.net textbox
个人分类: .NET应用
想对作者说点什么? 我来说一句

小写金额转换成大写金额

2015年04月07日 2KB 下载

人民币大写金额转换 源码

2010年10月16日 4KB 下载

小写金额转换大写金额

2011年04月16日 3KB 下载

人民币大写金额转换工具

2010年10月16日 64KB 下载

Ireport实现金额大写(自己实现的)

2012年11月15日 190KB 下载

没有更多推荐了,返回首页

不良信息举报

大写的金额转换问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭