<!DOCTYPE html><html><head> ???<meta charset="UTF-8"> ???<title>JS将数字转换为中文</title></head><body><script> ???// 定义转换函数 ???function transform(tranvalue){ ???????try{ ???????????var i=1; ???????????var dw2 = new Array("","万","亿");//大单位 ???????????var dw1 = new Array("拾","佰","仟");//小单位 ???????????var dw = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");//整数部分用 ???????????//以下是小写转换成大写显示在合计大写的文本框中 ????????????????//分离整数与小数 ???????????var source = splits(tranvalue); ???????????var num = source[0]; ???????????var dig = source[1]; ???????????//转换整数部分 ???????????var k1=0;//计小单位 ???????????var k2=0;//计大单位 ???????????var sum = 0; ???????????var str=""; ???????????var len = source[0].length;//整数的长度 ???????????for(i=1;i<=len;i++){ ???????????????var n = source[0].charAt(len-i);//取得某个位数上的数字 ???????????????var bn = 0; ???????????????if(len-i-1>=0){ ???????????????????bn = source[0].charAt(len-i-1);//取得某个位数前一位上的数字 ???????????????} ???????????????sum = sum+Number(n); ???????????????if(sum!=0){ ???????????????????str = dw[Number(n)].concat(str);//取得该数字对应的大写数字,并插入到str字符串的前面 ???????????????????if(n==‘0‘)sum = 0; ???????????????} ???????????????if(len-i-1>=0){//在数字范围内 ???????????????????if(k1!=3){//加小单位 ???????????????????????if(bn!=0){ ???????????????????????????str = dw1[k1].concat(str); ???????????????????????} ???????????????????????k1++; ???????????????????}else{//不加小单位,加大单位 ???????????????????????k1=0; ???????????????????????var temp = str.charAt(0); ???????????????????????if(temp=="万" || temp=="亿")//若大单位前没有数字则舍去大单位 ???????????????????????????str = str.substr( 1, str.length-1); ???????????????????????str = dw2[k2].concat(str); ???????????????????????sum = 0; ???????????????????} ???????????????} ???????????????if(k1==3)//小单位到千则大单位进一 ???????????????{ k2++;} ???????????} ???????????//转换小数部分 ???????????var strdig=""; ???????????if(dig!=""){ ???????????????var n = dig.charAt(0); ???????????????if(n!=0){ ???????????????????strdig += dw[Number(n)]+"角";//加数字 ???????????????} ???????????????var n = dig.charAt(1); ???????????????if(n!=0){ ???????????????????strdig += dw[Number(n)]+"分";//加数字 ???????????????} ???????????} ???????????str += "元"+strdig; ???????}catch(e){ ???????????return "0元"; ???????} ???????return str; ???} ???//拆分整数与小数 ???function splits(tranvalue){ ???????var value = new Array(‘‘,‘‘); ???????temp = tranvalue.split("."); ???????for(var i=0;i<temp.length;i++){ ???????????value[i] = temp[i]; ???????} ???????return value; ???} ???// 调用 ???var a = ‘12345678‘; ???var b = transform(a); ???console.log(b);</script></body></html>
运行后的结果:
壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元
JS将数字转换为中文
原文地址:https://www.cnblogs.com/kynewu/p/9166428.html