[源码][VB.Net]数字转大写数字和大写人民币函数
来源:互联网 发布:软妹服装淘宝店铺 编辑:程序博客网 时间:2024/05/18 21:38
[源码][VB.Net]数字转大写数字和大写人民币函数
Namespace Hot.Common
Public Class NumUtil
'数字转成人民币大写
Public Shared Function CapitalRMB(ByVal Num As Decimal) As String ' 得到大写金额
'----------------------------------------------------------------------
Dim vNum, vDec, ret
'------------------------------------------------------------------
vNum = Right(Format$(Int(Num), "000000000000"), 12) ' 取十二位整数
vDec = Right(Format$(Int(Num * 100), "00"), 2) ' 取小数点后两位
'------------------------------------------------------------------
ret = Num2RMB(Left(vNum, 4), "亿", False)
If Len(ret) = 0 Then
ret = Num2RMB(Mid(vNum, 5, 4), "万", False)
Else
ret = ret + Num2RMB(Mid(vNum, 5, 4), "万", True)
End If
If Len(ret) = 0 Then
ret = Num2RMB(Right(vNum, 4), "元", False)
Else
ret = ret + Num2RMB(Right(vNum, 4), "元", True)
End If
'------------------------------------------------------------------
If ret = "元" Then ret = ""
'------------------------------------------------------------------
If vDec = "00" And ret <> "" Then
Return ret + "整"
Else
If Left(vDec, 1) <> "0" Then
ret = ret + Num2Char(Left(vDec, 1)) + "角"
End If
If Right(vDec, 1) <> "0" Then
If Right(ret, 1) = "角" Then
ret = ret + Num2Char(Right(vDec, 1)) + "分"
Else
If ret <> "" Then
ret = ret + "零" + Num2Char(Right(vDec, 1)) + "分"
Else
ret = Num2Char(Right(vDec, 1)) + "分"
End If
End If
End If
Return ret
End If
End Function
'数字转成数字大写--只能保留两位小数,一般够用
Public Shared Function CapitalNum(ByVal Num As Decimal) As String ' 得到大写金额
'----------------------------------------------------------------------
Dim vNum, vDec, ret
'------------------------------------------------------------------
vNum = Right(Format$(Int(Num), "000000000000"), 12) ' 取十二位整数
vDec = Right(Format$(Int(Num * 100), "00"), 2) ' 取小数点后两位
'------------------------------------------------------------------
ret = Num2RMB(Left(vNum, 4), "亿", False)
If Len(ret) = 0 Then
ret = Num2RMB(Mid(vNum, 5, 4), "万", False)
Else
ret = ret + Num2RMB(Mid(vNum, 5, 4), "万", True)
End If
If Len(ret) = 0 Then
ret = Num2RMB(Right(vNum, 4), "", False)
Else
ret = ret + Num2RMB(Right(vNum, 4), "", True)
End If
'------------------------------------------------------------------
If ret = "" Then ret = "零"
'------------------------------------------------------------------
If vDec = "00" Then
Return ret
Else
ret &= "点"
If Left(vDec, 1) <> "0" Then
ret = ret + Num2Char(Left(vDec, 1)) + ""
End If
If Right(vDec, 1) <> "0" Then
If Right(ret, 1) = "" Then
ret = ret + Num2Char(Right(vDec, 1)) + ""
Else
If ret <> "" Then
ret = ret + "" + Num2Char(Right(vDec, 1)) + ""
Else
ret = Num2Char(Right(vDec, 1)) + ""
End If
End If
End If
Return ret
End If
End Function
Private Shared Function Num2RMB(ByVal sFourBitString As String, Optional _
ByVal sUnit As String = "元", Optional ByVal bMustHeader As _
Boolean = False) As String
'----------------------------------------------------------------------
Dim vNum, i, RX, BR, hdr
'------------------------------------------------------------------
BR = "仟佰拾元"
'------------------------------------------------------------------
vNum = Trim(Str(Val(sFourBitString))) ' 最多四位
'------------------------------------------------------------------
If (Len(vNum) < 4 And Len(vNum) > 0) And bMustHeader Then hdr = "零" _
Else hdr = ""
RX = ""
Do While Len(vNum) > 0
i = Right(vNum, 1)
If i > 0 Then
RX = Num2Char(i) + Right(BR, 1) + RX
Else
If Left(RX, 1) <> "零" Then RX = "零" + RX
End If
vNum = Left(vNum, Len(vNum) - 1)
BR = Left(BR, Len(BR) - 1)
Loop
RX = Left(RX, Len(RX) - 1)
If Right(RX, 1) = "零" Then ' 去除多余的零
RX = Left(RX, Len(RX) - 1)
End If
If Len(RX) > 0 Then
Return hdr + RX + sUnit
Else
Return RX + IIf(sUnit = "元", "元", "")
End If
End Function
Private Shared Function Num2Char(ByVal i As Integer) As String
If i >= 0 And i <= 9 Then
Return Mid$("零壹贰叁肆伍陆柒捌玖", i + 1, 1)
Else
Return ""
End If
End Function
End Class
End Namespace
Public Class NumUtil
'数字转成人民币大写
Public Shared Function CapitalRMB(ByVal Num As Decimal) As String ' 得到大写金额
'----------------------------------------------------------------------
Dim vNum, vDec, ret
'------------------------------------------------------------------
vNum = Right(Format$(Int(Num), "000000000000"), 12) ' 取十二位整数
vDec = Right(Format$(Int(Num * 100), "00"), 2) ' 取小数点后两位
'------------------------------------------------------------------
ret = Num2RMB(Left(vNum, 4), "亿", False)
If Len(ret) = 0 Then
ret = Num2RMB(Mid(vNum, 5, 4), "万", False)
Else
ret = ret + Num2RMB(Mid(vNum, 5, 4), "万", True)
End If
If Len(ret) = 0 Then
ret = Num2RMB(Right(vNum, 4), "元", False)
Else
ret = ret + Num2RMB(Right(vNum, 4), "元", True)
End If
'------------------------------------------------------------------
If ret = "元" Then ret = ""
'------------------------------------------------------------------
If vDec = "00" And ret <> "" Then
Return ret + "整"
Else
If Left(vDec, 1) <> "0" Then
ret = ret + Num2Char(Left(vDec, 1)) + "角"
End If
If Right(vDec, 1) <> "0" Then
If Right(ret, 1) = "角" Then
ret = ret + Num2Char(Right(vDec, 1)) + "分"
Else
If ret <> "" Then
ret = ret + "零" + Num2Char(Right(vDec, 1)) + "分"
Else
ret = Num2Char(Right(vDec, 1)) + "分"
End If
End If
End If
Return ret
End If
End Function
'数字转成数字大写--只能保留两位小数,一般够用
Public Shared Function CapitalNum(ByVal Num As Decimal) As String ' 得到大写金额
'----------------------------------------------------------------------
Dim vNum, vDec, ret
'------------------------------------------------------------------
vNum = Right(Format$(Int(Num), "000000000000"), 12) ' 取十二位整数
vDec = Right(Format$(Int(Num * 100), "00"), 2) ' 取小数点后两位
'------------------------------------------------------------------
ret = Num2RMB(Left(vNum, 4), "亿", False)
If Len(ret) = 0 Then
ret = Num2RMB(Mid(vNum, 5, 4), "万", False)
Else
ret = ret + Num2RMB(Mid(vNum, 5, 4), "万", True)
End If
If Len(ret) = 0 Then
ret = Num2RMB(Right(vNum, 4), "", False)
Else
ret = ret + Num2RMB(Right(vNum, 4), "", True)
End If
'------------------------------------------------------------------
If ret = "" Then ret = "零"
'------------------------------------------------------------------
If vDec = "00" Then
Return ret
Else
ret &= "点"
If Left(vDec, 1) <> "0" Then
ret = ret + Num2Char(Left(vDec, 1)) + ""
End If
If Right(vDec, 1) <> "0" Then
If Right(ret, 1) = "" Then
ret = ret + Num2Char(Right(vDec, 1)) + ""
Else
If ret <> "" Then
ret = ret + "" + Num2Char(Right(vDec, 1)) + ""
Else
ret = Num2Char(Right(vDec, 1)) + ""
End If
End If
End If
Return ret
End If
End Function
Private Shared Function Num2RMB(ByVal sFourBitString As String, Optional _
ByVal sUnit As String = "元", Optional ByVal bMustHeader As _
Boolean = False) As String
'----------------------------------------------------------------------
Dim vNum, i, RX, BR, hdr
'------------------------------------------------------------------
BR = "仟佰拾元"
'------------------------------------------------------------------
vNum = Trim(Str(Val(sFourBitString))) ' 最多四位
'------------------------------------------------------------------
If (Len(vNum) < 4 And Len(vNum) > 0) And bMustHeader Then hdr = "零" _
Else hdr = ""
RX = ""
Do While Len(vNum) > 0
i = Right(vNum, 1)
If i > 0 Then
RX = Num2Char(i) + Right(BR, 1) + RX
Else
If Left(RX, 1) <> "零" Then RX = "零" + RX
End If
vNum = Left(vNum, Len(vNum) - 1)
BR = Left(BR, Len(BR) - 1)
Loop
RX = Left(RX, Len(RX) - 1)
If Right(RX, 1) = "零" Then ' 去除多余的零
RX = Left(RX, Len(RX) - 1)
End If
If Len(RX) > 0 Then
Return hdr + RX + sUnit
Else
Return RX + IIf(sUnit = "元", "元", "")
End If
End Function
Private Shared Function Num2Char(ByVal i As Integer) As String
If i >= 0 And i <= 9 Then
Return Mid$("零壹贰叁肆伍陆柒捌玖", i + 1, 1)
Else
Return ""
End If
End Function
End Class
End Namespace
- [源码][VB.Net]数字转大写数字和大写人民币函数
- 数字转人民币大写
- 数字转人民币大写
- 人民币数字转大写
- oracle 数字转人民币大写函数
- 数字转大写人民币
- sqlserver 人民币数字转大写
- js 数字转人民币大写
- 数字转换大写人民币
- 人民币数字大写转换
- .net 将数字转换为人民币大写
- java实现人民币数字和大写转换
- sql 数字转人民币大写函数(两种方法)
- PHP人民币金额数字转中文大写的函数
- PHP人民币金额数字转中文大写的函数
- C#,数字转人民币大写方法
- Excel数字 转 人民币 繁体大写
- 数字转人民币大写算法一则
- Dialogic DI/SI座席卡会议问题和解决之道
- 自己做的SQL语句生成器,希望大家有用
- C#中的委托
- [转载]电视散文《毕业了》新
- [转载]获得计算机硬件信息(VB.net)
- [源码][VB.Net]数字转大写数字和大写人民币函数
- [续]基于XML的WEB系统报表精确打印实现
- [整理]有用的SQL语句(不断增加)
- SQL Server 2005 - 数据定义语言触发器(Data Definition Language Triggers)[翻译] [转]
- 怎样在客户端得到页面上的dropdownlist当前选中的项目的文字?
- 低表达,高需要:如何达到基于本性的最佳状态?
- VB.net(Win)录入验证的办法
- SendKeys.Send 键代码
- 北大青鸟s2Sql第三章