JQuery 金额转大写
最近一个需求中:订单单据总计需要显示大写格式
壹万捌仟肆佰零柒元叁角柒分
方法一:
function upperOne(a){
var totalPrice = a;
//如果输入的不是数字,则将其设置为空
totalPrice = totalPrice.replace(/[^\d\.]/g,'').replace(/^0/,'');
var Num = totalPrice;
if(Num=="" || Num==0.00) {//输入框删减为空时
return "零元整";
}
part = String(Num).split(".");
newchar = "";
for(i=part[0].length-1;i>=0;i--){
if(part[0].length > 10){
alert("位数过大,无法计算");//前面如果有验证位数的,此处判断可去掉
return false;
}
tmpnewchar = ""
perchar = part[0].charAt(i);
switch(perchar){
case "0": tmpnewchar="零" + tmpnewchar ;break;
case "1": tmpnewchar="壹" + tmpnewchar ;break;
case "2": tmpnewchar="贰" + tmpnewchar ;break;
case "3": tmpnewchar="叁" + tmpnewchar ;break;
case "4": tmpnewchar="肆" + tmpnewchar ;break;
case "5": tmpnewchar="伍" + tmpnewchar ;break;
case "6": tmpnewchar="陆" + tmpnewchar ;break;
case "7": tmpnewchar="柒" + tmpnewchar ;break;
case "8": tmpnewchar="捌" + tmpnewchar ;break;
case "9": tmpnewchar="玖" + tmpnewchar ;break;
}
switch(part[0].length-i-1){
case 0: tmpnewchar = tmpnewchar +"元" ;break;
case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
case 4: tmpnewchar= tmpnewchar +"万" ;break;
case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
case 8: tmpnewchar= tmpnewchar +"亿" ;break;
case 9: tmpnewchar= tmpnewchar +"拾" ;break;
}
newchar = tmpnewchar + newchar;
}
if(Num.indexOf(".")!=-1){
if(part[1].length > 2) {
part[1] = part[1].substr(0,2)
}
for(i=0;i<part[1].length;i++){
tmpnewchar = ""
perchar = part[1].charAt(i)
switch(perchar){
case "0": tmpnewchar="零" + tmpnewchar ;break;
case "1": tmpnewchar="壹" + tmpnewchar ;break;
case "2": tmpnewchar="贰" + tmpnewchar ;break;
case "3": tmpnewchar="叁" + tmpnewchar ;break;
case "4": tmpnewchar="肆" + tmpnewchar ;break;
case "5": tmpnewchar="伍" + tmpnewchar ;break;
case "6": tmpnewchar="陆" + tmpnewchar ;break;
case "7": tmpnewchar="柒" + tmpnewchar ;break;
case "8": tmpnewchar="捌" + tmpnewchar ;break;
case "9": tmpnewchar="玖" + tmpnewchar ;break;
}
if(i==0)tmpnewchar =tmpnewchar + "角";
if(i==1)tmpnewchar = tmpnewchar + "分";
newchar = newchar + tmpnewchar;
}
}
while(newchar.search("零元") != -1){
newchar = newchar.replace("零零", "零");
newchar = newchar.replace("零亿", "亿");
newchar = newchar.replace("亿万", "亿");
newchar = newchar.replace("零万", "万");
newchar = newchar.replace("零元", "元");
newchar = newchar.replace("零角", "");
newchar = newchar.replace("零分", "");
newchar = newchar.replace("零角零分", "整");
}
if(newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角"){
newchar = newchar+"整";
}
newchar = newchar.replace("零角零分", "整");
return newchar;
}
方法二:
原文链接:https://blog.csdn.net/hlbt0112/article/details/72844255
function upperTwo(a){
var money = a;
if(Num=="" || Num==0.00) {//输入框删减为空时
return "零元整";
}
var fraction = ['角','分'];
var digit = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
var unit = [['元','万','亿'],['','拾','佰','仟']];
var head = money < 0?'欠':'';
money = Math.abs(money);
var s = '';
for (var i = 0; i < fraction.length; i++) {
s += (digit[Math.floor(money * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
}
s = s || '整';
money = Math.floor(money);
for (var i = 0; i < unit[0].length && money > 0; i++) {
var p = '';
for (var j = 0; j < unit[1].length && money > 0; j++) {
p = digit[money % 10] + unit[1][j] + p;
money = Math.floor(money / 10);
}
s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
}
var sum= head + s.replace(/(零.)*零元/,'元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
return sum;
}