1. 程式人生 > >javascript實現將數字金額變成中文大寫金額

javascript實現將數字金額變成中文大寫金額

/*
     功能:將貨幣數字(阿拉伯數字)(小寫)轉化成中文(大寫)
 
     引數:Num為字元型,小數點之後保留兩位,例:Arabia_to_Chinese("1234.06")
     說明:1.目前本轉換僅支援到 拾億(元) 位,金額單位為元,不能為萬元,最小單位為分
         2.不支援負數
   */
   function numtochinese(Num)
 {
    for(i=Num.length-1;i>=0;i--)
    {
   Num = Num.replace(",","")//替換tomoney()中的“,”
   Num = Num.replace(" ","")//替換tomoney()中的空格
    }
 
    Num = Num.replace("¥","")//替換掉可能出現的¥字元
    if(isNaN(Num))
    {
   //驗證輸入的字元是否為數字
   alert("請檢查小寫金額是否正確");
   return;
    }
    //---字元處理完畢,開始轉換,轉換採用前後兩部分分別轉換---//
    part = String(Num).split(".");
    newchar = "";
    //小數點前進行轉化
    for(i=part[0].length-1;i>=0;i--)
    {
     if(part[0].length > 10){ alert("位數過大,無法計算");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)
     {
    alert("小數點之後只能保留兩位,系統將自動截段");
    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("零分", "");
 
    if (newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角")
     newchar = newchar+"整"
    return newchar;
 }
出自 51CTO.COM部落格