今日在网上引用了一个js函数,是用于将阿拉伯数字金额转换为中文大写金额,如数字是100006012.05时,转换结果是:壹亿陆仟零壹拾贰元零五分,不过我们银行的会计人员说,正确必须是:壹亿零陆仟零壹拾贰元零五分!(亿之后多了一个“亿”字)
由于本人对js只是知道一些皮毛,请各位高手帮忙,解决这个问题,谢谢!js函数如下,请改好并标注改动部分,谢谢!<script language="javascript"> function chineseNumber(num) { if (isNaN(num) || num > Math.pow(10, 12)) return ""var cn = "零壹贰叁肆伍陆柒捌玖"var unit = new Array("拾百千", "分角") var unit1= new Array("万亿", "") var numArray = num.toString().split(".") var start = new Array(numArray[0].length-1, 2) function toChinese(num, index) { var num = num.replace(/\d/g, function ($1) { return cn.charAt($1)+unit[index].charAt(start--%4 ? start%4 : -1) }) return num } for (var i=0; i<numArray.length; i++) { var tmp = ""for (var j=0; j*4<numArray[i].length; j++) { var strIndex = numArray[i].length-(j+1)*4var str = numArray[i].substring(strIndex, strIndex+4) var start = i ? 2 : str.length-1var tmp1 = toChinese(str, i) tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, "") tmp1 = tmp1.replace(/^壹拾/, "拾") tmp = (tmp1+unit1[i].charAt(j-1)) + tmp } numArray[i] = tmp } numArray[1] = numArray[1] ? numArray[1] : ""numArray[0] = numArray[0] ? numArray[0]+"元" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, "零") numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1]+"整"return numArray[0]+numArray[1] } alert(chineseNumber(100006012.05)); </script>
由于本人对js只是知道一些皮毛,请各位高手帮忙,解决这个问题,谢谢!js函数如下,请改好并标注改动部分,谢谢!<script language="javascript"> function chineseNumber(num) { if (isNaN(num) || num > Math.pow(10, 12)) return ""var cn = "零壹贰叁肆伍陆柒捌玖"var unit = new Array("拾百千", "分角") var unit1= new Array("万亿", "") var numArray = num.toString().split(".") var start = new Array(numArray[0].length-1, 2) function toChinese(num, index) { var num = num.replace(/\d/g, function ($1) { return cn.charAt($1)+unit[index].charAt(start--%4 ? start%4 : -1) }) return num } for (var i=0; i<numArray.length; i++) { var tmp = ""for (var j=0; j*4<numArray[i].length; j++) { var strIndex = numArray[i].length-(j+1)*4var str = numArray[i].substring(strIndex, strIndex+4) var start = i ? 2 : str.length-1var tmp1 = toChinese(str, i) tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, "") tmp1 = tmp1.replace(/^壹拾/, "拾") tmp = (tmp1+unit1[i].charAt(j-1)) + tmp } numArray[i] = tmp } numArray[1] = numArray[1] ? numArray[1] : ""numArray[0] = numArray[0] ? numArray[0]+"元" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, "零") numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1]+"整"return numArray[0]+numArray[1] } alert(chineseNumber(100006012.05)); </script>
numArray[0] = numArray[0] ? numArray[0] + "元" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, "");
function DX(n) { //金额大写转换函数
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))
return "数据非法";
var unit = "千百拾亿千百拾万千百拾元角分", str = "";
n += "00";
var p = n.indexOf('.');
if (p >= 0)
n = n.substring(0, p) + n.substr(p+1, 2);
unit = unit.substr(unit.length - n.length);
for (var i=0; i < n.length; i++)
str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零万/g,"零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
}alert(DX(100006012.05));
to xzy21com :按你的方法,结果连“万”后面和小数点后面的“零”也不显示了!
重新上传我这里最新最完整js代码,如下代码是按我们会计部门要求,经过多次修正后的,请大侠使用以下代码按题目要求给予修改测试,无尽感谢!
题目要求是:如数字是100006012.05时,转换结果是:壹亿陆仟零壹拾贰元零五分,不过我们银行的会计人员说,正确必须是:壹亿零陆仟零壹拾贰元零五分!(亿之后要多了一个“零”字)<script language="javascript">
function chineseNumber(num) ///数字转换大写
{
if (isNaN(num) || num > Math.pow(10, 12)) return ""
if (num==0) return "零元整"
var cn = "零壹贰叁肆伍陆柒捌玖"
var unit = new Array("拾佰仟", "分角")
var unit1= new Array("万亿", "")
var numArray = num.toString().split(".")
var start = new Array(numArray[0].length-1, 2)function toChinese(num, index)
{
var num = num.replace(/\d/g, function ($1)
{
return cn.charAt($1)+unit[index].charAt(start--%4 ? start%4 : -1)
})
return num
}for (var i=0; i<numArray.length; i++)
{
var tmp = ""
for (var j=0; j*4<numArray[i].length; j++)
{
var strIndex = numArray[i].length-(j+1)*4
var str = numArray[i].substring(strIndex, strIndex+4)
var start = i ? 2 : str.length-1
var tmp1 = toChinese(str, i)
tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, "")
//tmp1 = tmp1.replace(/^壹拾/, "拾")
tmp = (tmp1+unit1[i].charAt(j-1)) + tmp
}
numArray[i] = tmp
}numArray[1] = numArray[1] ? numArray[1] : ""
numArray[0] = numArray[0] ? numArray[0]+"元" : numArray[0], numArray[1] //= numArray[1].replace(/^零+/, "")
numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1]+"整"
return (numArray[0]+numArray[1]).replace(/^零/,"").replace(/亿万/,"亿")}</script>
死教条主义。
把这行
return (numArray[0]+numArray[1]).replace(/^零/,"").replace(/亿万/,"亿")
给成就完事了
return (numArray[0]+numArray[1]).replace(/^零/,"").replace(/亿万/,"亿零")
function parseChinese(n) {
var c = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
var p = ["分","角","元","拾","百","千","万","拾","百","千","亿","拾","百","千"];
var temp = (/^(0|[1-9])\d*(\.\d+)?$/).test(n)? n : null;
var i = -1;
var result = null;
if(temp) {
temp = parseFloat(temp).toFixed(2);
i = (/\.\d+$/).test(temp)? -1 : 1;
result = temp.toString().replace(/\./g, "").split("").reverse().join("").replace(/\d/g, function(a) {i++; return p[i] + c[a]}).split("").reverse().join("").replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/(千|百|拾)零(元|万|亿)/g,"$1$2").replace(/(亿零)万/g, "$1").replace(/(万零)元/g, "$1").replace(/(零)+/g, "零").replace(/(亿)零(元)/g, "$1$2").replace(/元((零角)*零分|)$/g, "元整");
}
return result;
}
alert(parseChinese(100006012.05));