数字转换为英文大写

之前一个网友工作中需要把数字转换为英文大写,于是就给他写了一个。函数有两个参数,数字和单位。第二个参数为计量单位,可以是货币也可以是重量。 代码如下:

 1 Function Num2Str(FullNum As Variant, NumUnit As Integer)
 2     Dim NumLen As Integer
 3     Dim i As Integer
 4     Dim ArrUnit
 5     Dim SubUnit
 6     Dim Factor
 7     Dim Num As Variant
 8     Dim Dec As String
 9     
10     ArrUnit = Array("Dollar", "Euro", "KG", "KPC")
11     SubUnit = Array("Cent", "Cent", "G", "PC")
12     Factor = Array(100, 100, 1000, 1000)
13     
14     Num = Int(FullNum)
15     Dec = Right(Application.Round(((FullNum - Num) * Factor(NumUnit)), 0) + 1000, 3)    
16     
17     NumLen = Application.RoundUp(Len(Num) / 3, 0)
18     Num2Str = ""
19 
20     For i = NumLen To 1 Step -1
21         Num2Str = Num2Str & NumPart(Mid(10 ^ (3 * NumLen) + Num, 2 + 3 * NumLen - 3 * i, 3), i)
22     Next i
23     
24     Num2Str = Num2Str & " " & ArrUnit(NumUnit)
25     If Num > 1 Then Num2Str = Num2Str & "s"
26     If Dec <> "000" Then
27         Num2Str = Num2Str & NumPart(Dec, 1) '
28         Num2Str = Num2Str & " " & SubUnit(NumUnit)
29         If Dec <> "001" Then Num2Str = Num2Str & "s"
30     End If
31     Num2Str = Num2Str & "."
32     
33 End Function
34 
35 Function NumPart(Num As String, Part As Integer)
36     Dim ArrNum
37     Dim ArrTen
38     Dim ArrTeen
39     Dim iDigit As Integer
40 
41     ArrNum = Array("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine")
42     ArrTen = Array("Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninty")
43     ArrTeen = Array("Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
44     
45     iDigit = Left(Num, 1)
46     If iDigit <> 0 Then NumPart = " " & ArrNum(iDigit - 1) & " Hundred"
47     
48     iDigit = Mid(Num, 2, 1)
49     If iDigit = 1 Then
50         iDigit = Right(Num, 1)
51         NumPart = NumPart & " " & ArrTeen(iDigit) & " "
52         GoTo Unit
53     Else
54         If iDigit <> 0 Then NumPart = NumPart & " " & ArrTen(iDigit - 2)
55     End If
56     
57     iDigit = Right(Num, 1)
58     If iDigit <> 0 Then NumPart = NumPart & " " & ArrNum(iDigit - 1)
59     
60 Unit:
61     If Part = 3 Then NumPart = NumPart & " Million "
62     If Part = 2 Then NumPart = NumPart & " Thousand "
63 
64 End Function

 

转载于:https://www.cnblogs.com/wisever/p/9385580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值