根据数字的读法,写了一个把数字转成中文字符串的程序
参数一为数字
参数二为是不是反回人民币大写
参数三为是不是直接读数字,否则带有十百等单位
参数四为设置小数点后面的位数,默认为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
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
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
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)