数字转英文(货币)大写

大写|货币

'功能模块:数字转英文(货币)大写
'Public Function NumberToString(Number As Double) As String
'调用形式:debug.print NumberToString(1234.32)
'说明:最大支持12位数字,小数点后精确两位
'程序:杨鑫光(Volitation)
Dim StrNO(19) As String
Dim Unit(8) As String
Dim StrTens(9) As String

Public Function NumberToString(Number As Double) As String
Dim Str As String, BeforePoint As String, AfterPoint As String, tmpStr As String
Dim Point As Integer
Dim nBit As Integer
Dim CurString As String
Call Init
'//开始处理
Str = CStr(Round(Number, 2))
' Str = Number
If InStr(1, Str, ".") = 0 Then
BeforePoint = Str
AfterPoint = ""
Else
BeforePoint = Left(Str, InStr(1, Str, ".") - 1)
AfterPoint = Right(Str, Len(Str) - InStr(1, Str, "."))
End If

If Len(BeforePoint) > 12 Then
NumberToString = "Too Big."
Exit Function
End If
Str = ""
Do While Len(BeforePoint) > 0
nNumLen = Len(BeforePoint)
If nNumLen Mod 3 = 0 Then
CurString = Left(BeforePoint, 3)
BeforePoint = Right(BeforePoint, nNumLen - 3)
Else
CurString = Left(BeforePoint, (nNumLen Mod 3))
BeforePoint = Right(BeforePoint, nNumLen - (nNumLen Mod 3))
End If
nBit = Len(BeforePoint) / 3
tmpStr = DecodeHundred(CurString)
If (BeforePoint = String(Len(BeforePoint), "0") Or nBit = 0) And Len(CurString) = 3 Then
If CInt(Left(CurString, 1)) <> 0 And CInt(Right(CurString, 2)) <> 0 Then
tmpStr = Left(tmpStr, InStr(1, tmpStr, Unit(4)) + Len(Unit(4))) & Unit(8) & " " & Right(tmpStr, Len(tmpStr) - (InStr(1, tmpStr, Unit(4)) + Len(Unit(4))))
Else 'If CInt(Left(CurString, 1)) <> 0 And CInt(Right(CurString, 2)) = 0 Then
tmpStr = Unit(8) & " " & tmpStr
End If
End If

If nBit = 0 Then
Str = Trim(Str & " " & tmpStr)
Else
Str = Trim(Str & " " & tmpStr & " " & Unit(nBit))
End If
If Left(Str, 3) = Unit(8) Then Str = Trim(Right(Str, Len(Str) - 3))
If BeforePoint = String(Len(BeforePoint), "0") Then Exit Do
'Debug.Print Str
Loop
BeforePoint = Str

If Len(AfterPoint) > 0 Then
AfterPoint = Unit(6) & " " & DecodeHundred(AfterPoint) & " " & Unit(7)
Else
AfterPoint = Unit(5)
End If
NumberToString = BeforePoint & " " & AfterPoint
End Function
Private Function DecodeHundred(HundredString As String) As String
Dim tmp As Integer
If Len(HundredString) > 0 And Len(HundredString) <= 3 Then
Select Case Len(HundredString)
Case 1
tmp = CInt(HundredString)
If tmp <> 0 Then DecodeHundred = StrNO(tmp)
Case 2
tmp = CInt(HundredString)
If tmp <> 0 Then
If (tmp < 20) Then
DecodeHundred = StrNO(tmp)
Else
If CInt(Right(HundredString, 1)) = 0 Then
DecodeHundred = StrTens(Int(tmp / 10))
Else
DecodeHundred = StrTens(Int(tmp / 10)) & "-" & StrNO(CInt(Right(HundredString, 1)))
End If
End If
End If
Case 3
If CInt(Left(HundredString, 1)) <> 0 Then
DecodeHundred = StrNO(CInt(Left(HundredString, 1))) & " " & Unit(4) & " " & DecodeHundred(Right(HundredString, 2))
Else
DecodeHundred = DecodeHundred(Right(HundredString, 2))
End If
Case Else
End Select
End If

End Function
Private Sub Init()
If StrNO(1) <> "One" Then
StrNO(1) = "One"
StrNO(2) = "Two"
StrNO(3) = "Three"
StrNO(4) = "Four"
StrNO(5) = "Five"
StrNO(6) = "Six"
StrNO(7) = "Seven"
StrNO(8) = "Eight"
StrNO(9) = "Nine"
StrNO(10) = "Ten"
StrNO(11) = "Eleven"
StrNO(12) = "Twelve"
StrNO(13) = "Thirteen"
StrNO(14) = "Fourteen"
StrNO(15) = "Fifteen"
StrNO(16) = "Sixteen"
StrNO(17) = "Seventeen"
StrNO(18) = "Eighteen"
StrNO(19) = "Nineteen"

StrTens(1) = "Ten"
StrTens(2) = "Twenty"
StrTens(3) = "Thirty"
StrTens(4) = "Forty"
StrTens(5) = "Fifty"
StrTens(6) = "Sixty"
StrTens(7) = "Seventy"
StrTens(8) = "Eighty"
StrTens(9) = "Ninety"

Unit(1) = "Thousand" '第一个三位
Unit(2) = "Million" '第二个三位
Unit(3) = "Billion" '第三个三位
Unit(4) = "Hundred"
Unit(5) = "Only"
Unit(6) = "Point"
Unit(7) = "Cent"'不是货币的话,把此值赋空
Unit(8) = "And"
End If
End Sub

时间: 2024-10-26 13:05:08

数字转英文(货币)大写的相关文章

php批量获取首字母(汉字、数字、英文)

php批量获取首字母(汉字.数字.英文) $mysql_server_name='127.0.0.1'; //改成自己的mysql数据库服务器 $mysql_username='用户'; //改成自己的mysql数据库用户名 $mysql_password='密码'; //改成自己的mysql数据库密码 $mysql_database='数据库'; //改成自己的mysql数据库名 mysql_connect('127.0.0.1', $mysql_username,$mysql_passwor

文案排版的元素:字形、方向、颜色、数字、英文、纹理、框架

文章描述:敏捷设计之超级淘宝店设计简易排版参照模板. 我发现我上次想的文案形状设计法还是很有效的,至少在我的工作中有起到很好的作用. 这种排版方法的关键在于让文案依照形状的走势来排版,整体效果是可以的,但是文案的排版精细度就不会太够. 为此我决定把这个方法再拓展一下. 在不考虑模特照片的情况下,我们可以把文案排版的元素分为以下七种: 字形.方向.颜色.数字.英文.纹理.框架. 然后我按照设计的难易顺序来排个参照序列. 一.斜向排版&竖向排版&横竖混排 有倾斜的排版视觉效果是非常直接的 斜向

一个把数字转英文的实用程序

程序 最近做项目的合同部分时用到需要能把数字转英文的程序,找过很多网站都没用,只能安下心来自己做,程序作的不太精简,但功能可以实现,也许同僚们会用得着.(vbscript)function zr4(y)'准备数据dim z(10)z(1)="ONE"z(2)="TWO"z(3)="THREE"z(4)="FOUR"z(5)="FIVE"z(6)="SIX"z(7)="SEVEN

将人民币的数字表示转化成大写表示(VB.NET版)

大写|人民币 '将人民币的数字表示转化成大写表示(VB.NET版) '本代码参考chenyu001 '将人民币的数字表示转化成大写表示(C#版) 'http://dev.csdn.net/article/28/28977.shtm '改的不多,但愿这些改动没让原作者发怒 Public Class ChineseNum '输入字串 Private _InputString As String '输出字串,如果无效则输出错误信息 Private _OutString As String '判断输出字

将人民币的数字表示转化成大写表示(C#版)

大写|人民币 将人民币的数字表示转化成大写表示(C#版) 实在没有什么好讲的,就是一个方法,大家拿去用吧 using System; namespace Test.Com{ /// <summary> /// 功能:字符串处理函数集 /// </summary> public class DealString { #region 私有成员 /// <summary> /// 输入字符串 /// </summary> private string inputS

Python中用于检查英文字母大写的isupper()方法

  这篇文章主要介绍了Python中用于检查英文字母大写的isupper()方法,是Python入门中的基础知识,需要的朋友可以参考下 isupper()方法检查字符串的所有基于大小写的字符(字母)是否是大写. 语法 以下是isupper()方法的语法: ? 1 str.isupper() 参数 NA 返回值 如果字符串中的所有字符是大写字母并且至少有一个可大小写字符此方法返回true,否则返回false. 例子 下面的例子显示了isupper()方法的使用. ? 1 2 3 4 5 6 7 #

php判断输入是否是纯数字,英文,汉字的方法

 这篇文章主要介绍了php判断输入是否是纯数字,英文,汉字的方法,涉及php中mb_strlen和strlen等函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php判断输入是否是纯数字,英文,汉字的方法.分享给大家供大家参考.具体分析如下: 这里利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文.英汉混合.还是纯汉字.简要说明如下: 1.如果strlen返回的字符长度和mb_strlen以当前编码计算的长度一 致,可以判断是纯英

利用正则表达式(只录入中文,数字,英文)_正则表达式

只能输入中文:<input id="input1" type="text" onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"> 只能输入全角字符:<input id="input2" type="text" onkeyup="value=value.replac(/[^\u4E00-\u9FA5]/g,'')"&

php判断输入是否是纯数字,英文,汉字的方法_php技巧

本文实例讲述了php判断输入是否是纯数字,英文,汉字的方法.分享给大家供大家参考.具体分析如下: 这里利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文.英汉混合.还是纯汉字.简要说明如下: 1.如果strlen返回的字符长度和mb_strlen以当前编码计算的长度一 致,可以判断是纯英文字符串. 2.如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致, 且strlen返回值同mb_strlen的返回值求余后得0可以判断为是全汉字的字符串