您的位置:首页 > Web前端

格式化金额以及数字金额转为大写金额【前端】

2018-02-27 09:55 148 查看
效果展示:



//格式化金额用于票据上面显示
function formateMoney(money) {
var res = "";
var str = money + "";
var arr = str.split('.');
//'123456789123456.78'.replace(/\B(?=(?:\d{1})+\b)/g, ',')
//获取整数部分
str = arr[0];
//获取到 字符串长度
var len = str.length;
//总长度 9 减去 -len-2 , 剩下就是补得空格数
var count = 9 - len - 2;
for (var i = 1; i < count; i++) {
res += "<td></td>";
}
//整数部分格式化处理
res += '<td>¥</td><td>' + str.replace(/\B(?=(?:\d{1})+\b)/g, '</td><td>') + '</td>';
if (arr.length >= 2) {
//证明有小数部分
res += '<td>' + arr[1].replace(/\B(?=(?:\d{1})+\b)/g, '</td><td>') + '</td>';
} else {
res += '<td>0</td><td>0</td>';//因为没有小数点,所有后面两位用空格代替
}

return res;
}
//数字金额转为大写金额
function ToUpperMoney(n) {
if (n == 0) {
return "";
}
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, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: