|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL数据库归MySQLAB公司所有,但是这个软件是开源的,有一个MySQL学习教程可以免费下载。稍俱常识的新入门者都可以轻松实现在一个常见硬件上安装和配置MySQL。例子:
Debug.PrintUpNumber(-10556765765555.45,0,True)
显现为:
负壹拾万伍仟伍佰陆拾柒亿陆仟伍佰柒拾陆万伍仟伍佰伍拾伍圆肆角零分
PublicFunctionUpNumber(ByValNumberAsDouble,OptionalByValTypAsLong,OptionalByValIsMoneyAsBoolean)AsString
********************************************************************************
--------------------------------------------------------------------------------
将阿拉伯数字转换为年夜写字符串
Version1.02002-02-06
Version1.12002-04-05修正到撑持到千亿
Version1.22004-08-14修正为撑持Typ,IsMoney参数,转换了局能够不是金额,撑持到百万亿
Roadbeg
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
参数申明:
Number待转换的数字,能够是小数.
Typ转换范例,可选值0,1
0转换为零,壹,贰等
1转换为一,二,三等
IsMoney是不是是金额,假如是,则转换为几元,小数后转换为几角,分,反之则转换为相似于"二点三"这类情势
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
前往值申明:
假如乐成,前往转换后的字符串
假如失利,前往空字符串
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
注重,此函数最年夜只撑持到百万亿
没有对Typ的值举行反省,假如Typ不为0,1之一,将会激发毛病.
另,因为Double范例数值局限的缘故原由,凌驾百万亿,将不克不及显现小数,一样的凌驾十万亿只能显现一个小数,以此类推.
--------------------------------------------------------------------------------
********************************************************************************
OnErrorGoToDoerr
DimResultAsString前往值
DimstrNumberAsString文本型的Number
DimlngNumberLenAsLong文本型的Number的Len
DimstrTmpAsString
DimstrFirstAsString,strEndAsString
DimlngIAsLong,lngJAsLong,lngTmpAsLong
DimstrNum(10)AsString年夜写数字
DimstrUnit(16)AsString单元,好比十,拾,万等
DimstrUnitB(2)AsString小数后的单元
初始化
SelectCaseTyp
Case0
strNum(0)="零":strNum(1)="壹":strNum(2)="贰":strNum(3)="叁":strNum(4)="肆"
strNum(5)="伍":strNum(6)="陆":strNum(7)="柒":strNum(8)="捌":strNum(9)="玖"
IfIsMoneyThen
strUnit(0)="圆"
strUnitB(0)="角":strUnitB(1)="分"
Else
strUnit(0)="点"
EndIf
strUnit(1)="拾":strUnit(2)="佰":strUnit(3)="仟":strUnit(4)="万"
strUnit(5)="拾":strUnit(6)="佰":strUnit(7)="仟":strUnit(8)="亿":strUnit(9)="拾"
strUnit(10)="佰":strUnit(11)="仟":strUnit(12)="万":strUnit(13)="拾":strUnit(14)="佰"
strUnit(15)="仟"
Case1
strNum(0)="零":strNum(1)="一":strNum(2)="二":strNum(3)="三":strNum(4)="四"
strNum(5)="五":strNum(6)="六":strNum(7)="七":strNum(8)="八":strNum(9)="九"
IfIsMoneyThen
strUnit(0)="元"
strUnitB(0)="角":strUnitB(1)="分"
Else
strUnit(0)="点"
EndIf
strUnit(1)="十":strUnit(2)="百":strUnit(3)="千":strUnit(4)="万"
strUnit(5)="十":strUnit(6)="百":strUnit(7)="千":strUnit(8)="亿":strUnit(9)="十"
strUnit(10)="百":strUnit(11)="千":strUnit(12)="万":strUnit(13)="十":strUnit(14)="百"
strUnit(15)="千"
CaseElse
参数毛病
GoToErrexit
EndSelect
Result=""
IfNumber=0Then
IfIsMoneyThen
Result=strNum(0)&strUnit(0)&"整"
Else
Result=strNum(0)
EndIf
Else
IfIsMoneyThen
strNumber=Trim(str(FormatCurrency(Number,2,vbTrue,vbFalse,vbFalse)))保存两位小数
Else
strNumber=Trim(str(Number))复杂的转换为字符串型
EndIf
lngNumberLen=Len(strNumber)
IfLeft(strNumber,1)="-"Then处置正数
strFirst="负"
strNumber=Right(strNumber,lngNumberLen-1)
lngNumberLen=lngNumberLen-1
Else
strFirst=""一般不必要=""
EndIf
lngI=InStrRev(strNumber,".")
IflngIThen
strTmp=Right(strNumber,lngNumberLen-lngI)
IfIsMoneyThen
strTmp=strTmp&"00"
strEnd=""一般不必要=""
ForlngJ=1To2
Result=Result&strNum(CLng(Mid$(strTmp,lngJ,1)))&strUnitB(lngJ-1)
Next
Else
strTmp=Right(strNumber,lngNumberLen-lngI)
ForlngJ=1TolngNumberLen-lngI
Result=Result&strNum(CLng(Mid$(strTmp,lngJ,1)))
Next
EndIf
strNumber=Left(strNumber,lngI-1)往除小数部分
lngNumberLen=Len(strNumber)新的字符串长度
Else
IfIsMoneyThen
strEnd="整"
Else
strEnd=""
EndIf
EndIf
以下为主轮回部分
lngI=0
ForlngJ=lngNumberLenTo1Step-1
lngTmp=CLng(Mid$(strNumber,lngJ,1))
IflngTmpThen
Result=strNum(lngTmp)&strUnit(lngI)&Result
Else
IflngI=0OrlngI=4OrlngI=8OrlngI=12Then凌驾16位不撑持
Result=strNum(lngTmp)&strUnit(lngI)&Result
Else
Result=strNum(lngTmp)&Result
EndIf
EndIf
lngI=lngI+1
Next
Result=Replace(Result,strNum(0)&strNum(0),strNum(0))零零","零
Result=Replace(Result,strNum(0)&strNum(0),strNum(0))零零","零
亿零万零圆","亿圆"
Result=Replace(Result,strUnit(8)&strNum(0)&strUnit(4)&strNum(0)&strUnit(0),strUnit(8)&strUnit(0))
Result=Replace(Result,strUnit(8)&strNum(0)&strUnit(4),strUnit(8)&strNum(0))亿零万,"亿零"
Result=Replace(Result,strUnit(4)&strNum(0)&strUnit(0),strUnit(4)&strUnit(0))亿零万","亿零
Result=Replace(Result,strNum(0)&strUnit(8),strUnit(8))零亿
Result=Replace(Result,strNum(0)&strUnit(4),strUnit(4))零万
Result=Replace(Result,strNum(0)&strUnit(0),strUnit(0))零圆
Result=Replace(Result,strNum(0)&strNum(0),strNum(0))零零","零
Result=Replace(Result,strNum(0)&strNum(0),strNum(0))零零","零
IfIsMoneyThen
Result=strFirst&Result&strEnd
Else
IfRight(Result,1)=strUnit(0)ThenResult=Left(Result,Len(Result)-1)往除最初一个"点"
EndIf
EndIf
Complete:
GoToQuit
Doerr:
Errexit:
Result=""
Quit:
UpNumber=Result
EndFunction
如果你需要额外的功能的话,MySQL的普及性实际上可以让你发现总有一个厂商会提供准确的解决方案,而这个方案会满足你的需要和需求。 |
|