数字大写对照表:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
壹 | 贰 | 叁 | 肆 | 伍 | 陆 | 柒 | 捌 |
9 | 0 | 十 | 百 | 千 | 万 | 亿 | 米 |
玖 | 零 | 拾 | 佰 | 仟 | 万 | 亿 | 圆 |
*** 将金额数字转大写的方式封装 ,下面为人人整理些常用的实现方式。
方式一:
function digitUppercase(price) { const fraction = ['角', '分']; const digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; const unit = [ ['米', '万', '亿'], ['', '拾', '佰', '仟'], ]; let num = Math.abs(price); let s = ''; fraction.forEach((item, index) => { s += (digit[Math.floor(num * 10 * (10 ** index)) % 10] + item).replace(/零./, ''); }); s = s || '整'; num = Math.floor(num); for (let i = 0; i < unit[0].length && num > 0; i += 1) { let p = ''; for (let j = 0; j < unit[1].length && num > 0; j += 1) { p = digit[num % 10] + unit[1][j] + p; num = Math.floor(num / 10); } s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s; } return s.replace(/(零.)*零米/, '米').replace(/(零.)+/g, '零').replace(/^整$/, '零米整'); }
方式二
//代码如下所示: function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); //基本单米 var cnIntRadice = new Array('', '拾', '佰', '仟'); //对应整数部门扩展单米 var cnIntUnits = new Array('', '万', '亿', '兆'); //对应小数部门单米 var cnDecUnits = new Array('角', '分', '毫', '厘'); //整数金额时后面跟的字符 var cnInteger = '整'; //整型完以后的单米 var cnIntLast = '米'; //更大处置的数字 var maxNum = 999999999999999.9999; //金额整数部门 var integerNum; //金额小数部门 var decimalNum; //输出的中文金额字符串 var chineseStr = ''; //星散金额后用的数组,预界说 var parts; if (money == '') { return ''; } money = parseFloat(money); if (money >= maxNum) { //超出更大处置数字 return ''; } if (money == 0) { chineseStr = cnNums[0] + cnIntLast + cnInteger; return chineseStr; } //转换为字符串 money = money.toString(); if (money.indexOf('.') == -1) { integerNum = money; decimalNum = ''; } else { parts = money.split('.'); integerNum = parts[0]; decimalNum = parts[1].substr(0, 4); } //获取整型部门转换 if (parseInt(integerNum, 10) > 0) { var zeroCount = 0; var IntLen = integerNum.length; for (var i = 0; i < IntLen; i++) { var n = integerNum.substr(i, 1); var p = IntLen - i - 1; var q = p / 4; var m = p % 4; if (n == '0') { zeroCount++; } else { if (zeroCount > 0) { chineseStr += cnNums[0]; } //归零 zeroCount = 0; chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if (m == 0 && zeroCount < 4) { chineseStr += cnIntUnits[q]; } } chineseStr += cnIntLast; } //小数部门 if (decimalNum != '') { var decLen = decimalNum.length; for (var i = 0; i < decLen; i++) { var n = decimalNum.substr(i, 1); if (n != '0') { chineseStr += cnNums[Number(n)] + cnDecUnits[i]; } } } if (chineseStr == '') { chineseStr += cnNums[0] + cnIntLast + cnInteger; } else if (decimalNum == '') { chineseStr += cnInteger; } return chineseStr; }
方式三
/ *** 数字转换为大写汉字 function Arabia_To_Chinese(n) { var unit = "仟佰拾亿仟佰拾万仟佰拾米角分", str = ""; n += "00"; var a = n.indexOf('-'); if(a != -1){ n = n.substring(1); var indexpoint = n.indexOf('.'); // 若是是小数,截取小数点前面的位数 if (indexpoint >= 0){ n = n.substring(0, indexpoint) + n.substr(indexpoint+1, 2); // 若为小数,截取需要使用的unit单米 } unit = unit.substr(unit.length - n.length); // 若为整数,截取需要使用的unit单米 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").replace(/^米零?|零分/g, "").replace(/米$/g, "米整").replace(/角$/g, "角整"); // 替换掉数字内里的零字符,获得效果 }else{ var indexpoint = n.indexOf('.'); // 若是是小数,截取小数点前面的位数 if (indexpoint >= 0){ n = n.substring(0, indexpoint) + n.substr(indexpoint+1, 2); // 若为小数,截取需要使用的unit单米 } unit = unit.substr(unit.length - n.length); // 若为整数,截取需要使用的unit单米 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").replace(/^米零?|零分/g, "").replace(/米$/g, "米整").replace(/角$/g, "角整"); // 替换掉数字内里的零字符,获得效果 } }
方式四:
<script> function moneyArabiaToChinese(Num) { // *** 数字转中文大写花样 var isNegative = false; // 是否负数 if(Num < 0) { Num = -Num; isNegative = true; } if(typeof Num == 'number') { Num = Num.toString(); } for(var i = Num.length - 1; i >= 0; i--) { Num = Num.replace(",", ""); // 替换money中的“,” Num = Num.replace(" ", ""); // 替换money中的空格 } Num = Num.replace("¥", ""); // 替换掉可能泛起的¥字符 if(isNaN(Num)) { // 验证输入的字符是否为数字 return; } // ---字符处置完毕,更先转换,转换接纳前后两部门划分转换---// part = String(Num).split("."); newchar = ""; // 小数点前举行转化 for(var i = part[0].length - 1; i >= 0; i--) { if(part[0].length > 10) { alertWarning("位数过大,无法盘算"); return ""; } // 若数目跨越拾亿单米,提醒 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) { alertWarning("小数点之后只能保留两位,系统将自动截段"); part[1] = part[1].substr(0, 2); } for(var 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("零分", ""); if(newchar.charAt(newchar.length - 1) == "米" || newchar.charAt(newchar.length - 1) == "角") { newchar = newchar + "整"; } if(isNegative) { newchar = '负' + newchar; } return newchar; } </script>
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
中新网西安10月28日电 (记者 梅镱泷)陕西延长县委宣传部28日披露,延长县境内27日发生一起车载试验装置爆炸事故,事故造成5人死亡,3人失联,5人受伤。 据了解,2019年10月27日,湖南省永...
只知道QQ号可以盗号吗?只求防盗!! 1、呵呵,黑客盗号有好几种方法呢,一般有以下两种:1﹑制作盗号木马如果你运行了他们的木马,或者进了他们挂马的网页,就会被盗哦2﹑他们用专属软件扫描弱密码。2、如果...
}登录的帐户用于协作/同步/等; 这些是付费的功用。 正如我前面说到的,这几个功用关于开发人员来说很棒,但对你来说,或许并不关怀。 事实上,假如你一般需求对你的客户端机械能保密,就像咱们在 Secu...
相信现在有很多的朋友们对于房产证、土地证及契税都想要了解吧,那么今天小编就来给大家针对房产证、土地证及契税进行一个介绍吧,希望小编介绍的内容能够为大家起到帮助哦 你好,房子在江宁的话,权证在江宁房管局...
一名成年人旅客可以免费携带一名身高不足1.2米的儿童。如果身高不足1.2米的儿童超过一名时,一名儿童免费,其他儿童请购买儿童票。儿童身高为1.2~1.5米。 年龄和身高都要看未成年人,主要看身高现在1...
编辑导语:这是一个社交网络的时代,中国社交网络的利用率高出了90%,险些所有网民都在利用微信、微博、QQ等种种社交软件。然而,熟人社交已经无法满意年青人日益增长的社交需求,于是生疏人社交平台在90后及...