人民币大写转化函数(ASP版和JavaScript版)
分类 JavaScript 2006-8-9 11:54:20 浏览 1828 回复 0 编辑 删除静态 删除 隐藏侧边栏 
转自 二十四画生的专栏 
. ASP 版:
复制  保存<%
'文 件 名:cmycur.asp
'作    者:二十四画生
'版    本:1.0
'简    介:转换函数文件。
'功能描述:转换货币形式的函数。(该文件包含两个函数,一个转换成一般货币形式cmycur(num),一个转换成大写形式cmycurd(num))
%>
<%
function cmycur(num) '转换为货币形式如:¥180.00元
dim thenum
if isnull(num) or num = "" then
cmycur = " "
else
num = Round(num,2)
thenum = FormatCurrency(num,2,-1)
cmycur = thenum & "元"
end if
end function
function cmycurd(num) 'num为要转换成大写的金额
dim str1  '如下定义
dim str2  '如下定义
dim str3  '从原num值中取出的值
dim i  '循环变量
dim j  'num的值乘以100的字符串长度
dim ch1  '数字的汉语读法
dim ch2  '数字位的汉字读法
dim nzero  '用来计算连续的零值是几个
str1 = "零壹贰叁肆伍陆柒捌玖"
str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"
nzero = 0
if isnull(num) or num = "" then
cmycurd = " "
exit function
end if
num = Round(Abs(num),2) '将num取绝对值并四舍五入取2位小数
j = Len(CStr(num * 100))  '出最高位
if j > 15 then
cmycurd = "溢出"
exit function
end if
str2 = Right(str2, j) '取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
'循环取出每一位需要转换的值
for i = 1 to j
str3 = Mid(num * 100, i, 1) '取出需转换的某一位的值
if i <> (j - 3) + 1 and i <> (j - 7) + 1 and i <> (j - 11) + 1 and i <>(j - 15) + 1 then    '当所取位数不为元、万、亿、万亿上的数字时
if str3 = 0 then
ch1 = ""
ch2 = ""
nzero = nzero + 1
elseif str3 <> 0 and nzero <> 0 then
ch1 = "零" & Mid(str1, clng(str3) + 1, 1)
ch2 = Mid(str2, i, 1)
nzero = 0
else
ch1 = Mid(str1, CLng(str3) + 1, 1)
ch2 = Mid(str2, i, 1)
nzero = 0
end if
else '该位是万亿,亿,万,元位等关键位
if str3 <> 0 and nzero <> 0 then
ch1 = "零" & Mid(str1, clng(str3) + 1, 1)
ch2 = Mid(str2, i, 1)
nzero = 0
elseif str3 <> 0 and nzero = 0 Then
ch1 = Mid(str1, clng(str3) + 1, 1)
ch2 = Mid(str2, i, 1)
nzero = 0
elseif str3 = 0 and nzero >= 3 Then
ch1 = ""
ch2 = ""
nzero = nzero + 1
elseif j > 10 Then  '当为整亿以上的时候,会多添加一个万,因此把这种情况去掉
ch1 = ""
nzero = nzero + 1
else
ch1 = ""
ch2 = Mid(str2, i, 1)
nzero = nzero + 1
end if
if i = (j - 11) + 1 Or i = (j - 3) + 1 Then '如果该位是亿位或元
位,则必须写上
ch2 = Mid(str2, i, 1)
end if
end if
cmycurd = cmycurd & ch1 & ch2
if i = j and str3 = 0 Then '最后一位(分)为0时,加上“整”
cmycurd = cmycurd & "整"
end if
next
if num = 0 then
cmycurd="零元整"
end if
end function
%>
JavaScript版
复制  保存function cmycurd(num){  //转成人民币大写金额形式
var str1 = '零壹贰叁肆伍陆柒捌玖';  //0-9所对应的汉字
var str2 = '万仟佰拾亿仟佰拾万仟佰拾元角分'; //数字位所对应的汉字
var str3;    //从原num值中取出的值
var str4;    //数字的字符串形式
var str5 = '';  //人民币大写金额形式
var i;    //循环变量
var j;    //num的值乘以100的字符串长度
var ch1;    //数字的汉语读法
var ch2;    //数字位的汉字读法
var nzero = 0;  //用来计算连续的零值是几个
num = Math.abs(num).toFixed(2);  //将num取绝对值并四舍五入取2位小数
str4 = (num * 100).toFixed(0).toString();  //将num乘100并转换成字符串形式
j = str4.length;      //出最高位
if (j > 15){return '溢出';}
str2 = str2.substr(15-j);    //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
//循环取出每一位需要转换的值
for(i=0;i<j;i++){
str3 = str4.substr(i,1);  //取出需转换的某一位的值
if (i != (j-3) && i != (j-7) && i != (j-11) && i != (j-15)){    //当所取位数不为元、万、亿、万亿上的数字时
if (str3 == '0'){
ch1 = '';
ch2 = '';
nzero = nzero + 1;
}
else{
if(str3 != '0' && nzero != 0){
ch1 = '零' + str1.substr(str3*1,1);
ch2 = str2.substr(i,1);
nzero = 0;
}
else{
ch1 = str1.substr(str3*1,1);
ch2 = str2.substr(i,1);
nzero = 0;
}
}
}
else{ //该位是万亿,亿,万,元位等关键位
if (str3 != '0' && nzero != 0){
ch1 = "零" + str1.substr(str3*1,1);
ch2 = str2.substr(i,1);
nzero = 0;
}
else{
if (str3 != '0' && nzero == 0){
ch1 = str1.substr(str3*1,1);
ch2 = str2.substr(i,1);
nzero = 0;
}
else{
if (str3 == '0' && nzero >= 3){
ch1 = '';
ch2 = '';
nzero = nzero + 1;
}
else{
if (j >= 11){
ch1 = '';
字符串数组怎么转成bytenzero = nzero + 1;
}
else{
ch1 = '';
ch2 = str2.substr(i,1);
nzero = nzero + 1;
}
}
}
}
}
if (i == (j-11) || i == (j-3)){  //如果该位是亿位或元位,则必须写上
ch2 = str2.substr(i,1);
}
str5 = str5 + ch1 + ch2;
if (i == j-1 && str3 == '0' ){  //最后一位(分)为0时,加上“整”
str5 = str5 + '整';
}
}
if (num == 0){
str5 = '零元整';
}
return
str5;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。