將數字格式的計算結果轉為漢字格式

有沒有想過將數字格式的計算結果轉化為漢字格式的? 有人會問”幹嘛要轉, 數字形式不是蠻好嘛”, 可是當這個數字很長的時候就不太容易讀出來瞭吧, 就算是有千分位的分隔符也不易順口說出, 因為這個符號是位英語行方便的, 不是適合我們的讀法. 那就自己寫一個函數來完成這項任務吧.

將下列代碼加到你的網頁裡, 通過num2chi()函數的調用就可以實現上述功能瞭, 快來試一試吧. 為瞭各位能讀懂這段代碼, 在下特意加入詳細註解, 還請老鳥們不要嫌羅唆, ^_^.

//———————-FUNCTION BEGIN—————————–
//——————————————-
//函數名: num2chi()
//叁  數: 一數字
//返回值: 一字符串
//功  能: 將難讀的長串數字轉為順口讀出的漢字
//作  者: chen.anson  
//站  點: HTTP://dreamer.oso.com.cn
//——————————————-

function num2chi(result) {

var chiresult = “”;            //定義返回值叁數chiresult為字符形式
result = result.toString();    //將result轉為字符形式
result = result.toLowerCase();
resultlen = result.length;    //定義resultlen為result的長度
tempresult = result;        //定義中間變量tempresult

for (i=1;i<=resultlen;i++)    //將字符串tempresult中的全部數字替換為漢字
{
    tempresult = tempresult.replace(“1″,”一”);
    tempresult = tempresult.replace(“2″,”二”);
    tempresult = tempresult.replace(“3″,”三”);
    tempresult = tempresult.replace(“4″,”四”);
    tempresult = tempresult.replace(“5″,”五”);
    tempresult = tempresult.replace(“6″,”六”);
    tempresult = tempresult.replace(“7″,”七”);
    tempresult = tempresult.replace(“8″,”八”);
    tempresult = tempresult.replace(“9″,”九”);
    tempresult = tempresult.replace(“0″,”零”);
    tempresult = tempresult.replace(“.”,”點”);
    tempresult = tempresult.replace(“e+”,”冪”);
}

while(tempresult.indexOf(“零零”)!=-1)    //避免字符串tempresult中出現”零零”, 但又不能改變字符串長度
{
    tempresult = tempresult.replace(“零零”,”位零”);
}

resultlen = tempresult.length;    //再次確認tempresult的長度, 因”e+”->”冪”會引起長度變化

for (i=1,j=1,k=1;i<=resultlen;i++)    //開始轉換, i為位數確認叁數, j為”十百千”確認叁數, k為”萬億”確認叁數
{
    //防止尾數為零, 如八拾零, 二拾零萬
    if (tempresult.charAt(resultlen-1)==”零”&&i==1)
        chiresult = “位”;
    else if (tempresult.charAt(resultlen-i)==”零”&&j==1)
        chiresult = “位” + chiresult;
    //——————————–

    //避免把”冪”和”點”當做實際位數, 而且單位確認變量重新計數
    else if (tempresult.charAt(resultlen-i)==”冪”)
    {
        j=1;k=1;chiresult = tempresult.charAt(resultlen-i) + chiresult;continue;

You May Also Like