JAVASCRIPT 数字转换成中文大写

在网上找了一段代码做了些改动,效果还不错

  1. function Transform(number)
  2. {
  3.  number=new String(parseFloat(number).toFixed(2));
  4.  //分离整数与小数
  5.  var num;
  6.  var dig;
  7.  if(number.indexOf(".") == -1)
  8.  {
  9.   num = number;
  10.   dig = "";
  11.  }
  12.  else
  13.  {
  14.   num = number.substr(0,number.indexOf("."));
  15.   dig = number.substr( number.indexOf(".")+1, number.length);
  16.  }
  17.  //转换整数部分
  18.  var i=1;
  19.  var len = num.length;
  20.  var dw2 = new Array("","万","亿");//大单位
  21.  var dw1 = new Array("拾","佰","千");//小单位
  22.  var dw = new Array("","壹","贰","叁","肆","伍","陆","柒","捌","玖");//整数部分用
  23.  var dws = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");//小数部分用
  24.  var k1=0;//计小单位
  25.  var k2=0;//计大单位
  26.  var str="";
  27.  for(i=1;i<=len;i++)
  28.  {
  29.   var n = num.charAt(len-i);
  30.   if(n=="0")
  31.   {
  32.    if(k1!=0)
  33.     str = str.substr(1,str.length-1);
  34.    
  35.    if(str.substr(0,1)!="零" && str.substr(0,1)!="万" && str.substr(0,1)!="亿")
  36.    {
  37.     str="零"+str;
  38.    }
  39.   }
  40.   
  41.   str = dw[Number(n)].concat(str);//加数字
  42.   
  43.   if(len-i-1>=0)//在数字范围内
  44.   {
  45.    if(k1!=3)//加小单位
  46.    {
  47.     str = dw1[k1].concat(str);
  48.     k1++;
  49.    }
  50.    else//不加小单位,加大单位
  51.    {
  52.     k1=0;
  53.     var temp = str.charAt(0);
  54.     if(temp=="万" || temp=="亿")//若大单位前没有数字则舍去大单位
  55.      str = str.substr( 1, str.length-1);
  56.     str = dw2[k2].concat(str);
  57.    }
  58.   }
  59.   
  60.   if(k1==3)//小单位到千则大单位进一
  61.   {
  62.    k2++;
  63.   }
  64.  }
  65.  if(str.substr(str.length-1,str.length)=="零")
  66.  {
  67.   str=str.substr(0,str.length-1);
  68.  }
  69.  //转换小数部分
  70.  var strdig="";
  71.  if(Number(dig)==0)
  72.  {
  73.   strdig="整";
  74.  }
  75.  else
  76.  {
  77.   for(i=0;i<2;i++)
  78.   {
  79.    var n = dig.charAt(i);
  80.    if(i==0 && Number(n)==0)
  81.    {
  82.     strdig="零"
  83.    }
  84.    else
  85.    {
  86.     strdig += dws[Number(n)]+(i==0 ? "角" : "分");//加数字
  87.    }
  88.   }
  89.  }
  90.  str += "元"+strdig;
  91.  return  str;
  92. }
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值