hur.cn - 华软网

 热门搜索

  • 授权方式: 免费资源
  • 支付金币: 0个
  • 金币充值: 点击查看
  • 下载方法: 点击查看
  • 源码大小: 0 KB
  • 评分等级: ★★★
  • 源码类别: 国内视频
  • 运行环境: WinXP/NT/Vista/Win7
  • 整理录入: 昕晨
  • 更新时间: 2004/7/2 16:00:04

源码介绍    


//================================================================================
// Function: 数字金额转换为大写金额
//--------------------------------------------------------------------------------
// Arguments:
// string as_money 数字金额字符串
// integer ai_flag 标志(0 普通格式,1 财务格式)
//--------------------------------------------------------------------------------
// Returns: string 大写金额(字符串),出错时返回空字符串。错误的原因是整数或小数太大。
// 说 明:精度以零来补充(只对财务格式有效)
// 如:01234.00表示整数到万位,小数到分.
// 整数最大48位,小数最大4位,共为52位
//--------------------------------------------------------------------------------
// Author: 章福兴 Date: 2005-06-22
//--------------------------------------------------------------------------------
// Modify History:
//
//--------------------------------------------------------------------------------
// 福州福兴工作室
//================================================================================
// ---------------------------------------------------------------------------------------
// 算法说明:
// 我国东汉时期的《数述记遗》书中所载,中国古代亿以上的大数计数方法有三个体系:
// 一是上法,为自乘系统: 万万为亿,亿亿为兆,兆兆为京。
// 这种系统,希腊的阿基米德也采用过;10^4=万, 10^8=亿,10^16=兆,10^32=京
// 二是中法,为万进系统,皆以万递进:万 亿 兆 京 垓 秭 穰 沟(土旁) 涧 正 载┅┅
// (万万为亿 万亿为兆 万兆为京┅┅) ;10^4=万, 10^8=亿,10^12=兆,10^16=京
// 三是下法,为十进系统,皆以十递进: 万 亿 兆 京 垓 秭┅┅到了近代,
// 直至解放前我国还流行十进的系统,即个 十 百 千 万 亿 兆 京 垓 秭 穰 沟(土旁) 涧 正 载,
// 皆以十进,10万为亿,10亿为兆,10兆为京......;10^4=万, 10^5=亿,10^6=兆,10^7=京
// 本程序采用中法,即以万递进。
// ---------------------------------------------------------------------------------------

If IsNull(as_Money) Or IsNull(ai_flag) Then
Return ""
End If

String 返回值 = ""
Integer 整数进制最大位数 = 47
String 整数进制[] = {"@拾@","@佰@","@仟@","#万#", &
"@拾@","@佰@","@仟@","#亿#", &
"@拾@","@佰@","@仟@","#兆#", &
"@拾@","@佰@","@仟@","#京#", &
"@拾@","@佰@","@仟@","#垓#", &
"@拾@","@佰@","@仟@","#秭#", &
"@拾@","@佰@","@仟@","#壤#", &
"@拾@","@佰@","@仟@","#沟#", &
"@拾@","@佰@","@仟@","#涧#", &
"@拾@","@佰@","@仟@","#正#", &
"@拾@","@佰@","@仟@","#载#", &
"@拾@","@佰@","@仟@"}

String 中文数字[10] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}

Integer 小数进制最大位数 = 4
String 小数进制[] = {"#角#","#分#","#厘#","#毫#"}

String 整数部分 = ""
String 小数部分 = ""
String 是否加整字 = ""
String 财务格式前导零符号 = "¤"

Integer iLoop,iTemp,iLen
String iString

If Not IsNumber(as_Money) Then
Return ""
End If

iTemp = PosW(as_Money,".")
If iTemp > 0 Then
整数部分 = LeftW(as_Money,iTemp -1)
小数部分 = MidW(as_Money,iTemp + 1)
Else
整数部分 = as_Money
小数部分 = ""
End If

If LenW(整数部分) > (整数进制最大位数 + 1) Then
// 最多能处理的整数位数
Return ""
End If
If LenW(小数部分) > 小数进制最大位数 Then
// 最多能处理的小数位数
Return ""
End If

// 判断是否要加“整”字
If ai_flag = 1 Then // 财务格式
If LenW(小数部分) <= 1 Then
是否加整字 = "整"
End If
Else
If Truncate(Dec("0." + 小数部分),1) = Dec("0." + 小数部分) Then
是否加整字 = "整"
End If
End If

// 先处理整数
iString = ""
iLen = LenW(整数部分)
For iLoop = 1 To iLen
iTemp = Integer(MidW(整数部分,iLen - iLoop + 1,1))
iString = 中文数字[iTemp + 1] + iString
If iLoop < iLen Then
iString = 整数进制[iLoop] + iString
End If
End For
If ai_flag = 0 Then // 普通格式
iTemp = PosW(iString,"零@")
Do While itemp > 0
iString = ReplaceW(iString,iTemp + 1,3,"")
iTemp = PosW(iString,"零@")
Loop

iTemp = PosW(iString,"零#")
Do While itemp > 0
iString = ReplaceW(iString,iTemp,1,"")
iTemp = PosW(iString,"零#")
Loop

iTemp = PosW(iString,"##")
Do While itemp > 0
iString = ReplaceW(iString,iTemp + 1,3,"")
iTemp = PosW(iString,"##")
Loop

iTemp = PosW(iString,"零零")
Do While itemp > 0
iString = ReplaceW(iString,itemp,2,"零")
iTemp = PosW(iString,"零零")
Loop

If LeftW(iString,1) = "#" Then
iString = MidW(iString,4)
End If
If LeftW(iString,1) = "零" Then
iString = MidW(iString,2)
End If
If RightW(iString,1) = "零" then
iString = LeftW(iString,LenW(iString) - 1)
End If
End If

整数部分 = iString + "元"

// 再处理小数
iString = ""
iLen = LenW(小数部分)
For iLoop = 1 To iLen
iTemp = Integer(MidW(小数部分,iLoop,1))
iString = iString + 中文数字[iTemp + 1]
iString = iString + 小数进制[iLoop]
End For
If ai_flag = 0 Then // 普通格式
iTemp = PosW(iString,"零#")
Do While itemp > 0
iString = ReplaceW(iString,iTemp + 1,3,"")
iTemp = PosW(iString,"零#")
Loop
iTemp = PosW(iString,"零零")
Do While itemp > 0
iString = ReplaceW(iString,itemp,2,"零")
iTemp = PosW(iString,"零零")
Loop

If RightW(iString,1) = "零" then
iString = LeftW(iString,LenW(iString) - 1)
End If
End If

小数部分 = iString

// 合并整数与小数
返回值 = 整数部分 + 小数部分

iTemp = PosW(返回值,"@")
Do While itemp > 0
返回值 = ReplaceW(返回值,itemp,1,"")
iTemp = PosW(返回值,"@")
Loop

iTemp = PosW(返回值,"#")
Do While itemp > 0
返回值 = ReplaceW(返回值,itemp,1,"")
iTemp = PosW(返回值,"#")
Loop

If ai_flag = 1 Then // 财务格式
iLen = LenW(返回值)
For iLoop = 1 To iLen Step 2
If MidW(返回值,iLoop,1) = "零" Then
返回值 = ReplaceW(返回值,iLoop,1,财务格式前导零符号)
Else
Exit
End If
End For
End If

Return 返回值 + 是否加整字



上一源码:为扩充PB的功能而写的数十个函数 推荐
下一源码:DESKTOP_SAMPLE_BASE_SRC

下载地址    

  • 数字金额大写终结版(pb9)

下载说明

  • 为防止盗链,本站资源部分有解压密码,解压密码点击查看
  • 如果您发现该资源不能下载,请通知管理员;
  • 为了保证您快速的下载,推荐使用迅雷或网际快车等专业工具下载;
  • 为确保所下资源能正常使用,请使用WinRAR v3.80或以上版本解压本站资源;
  • 本站所收集的下载资源均来源于网络,如果有侵犯您的版权,请来信告知,我们会马上处理;
  • 本站所提供的资源仅供学习和研究,请勿用于商业用途,请在下载后24小时内删除;
  • 本站不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害!