function toMoney = (num)
{
// Constants:
var MAXIMUM_NUMBER = 99999999999.99;
// Predefine the radix characters and currency symbols for output:
var CN_ZERO = "零";
var CN_ONE = "壹";
var CN_TWO = "贰";
var CN_THREE = "叁";
var CN_FOUR = "肆";
var CN_FIVE = "伍";
var CN_SIX = "陆";
var CN_SEVEN = "柒";
var CN_EIGHT = "捌";
var CN_NINE = "玖";
var CN_TEN = "拾";
var CN_HUNDRED = "佰";
var CN_THOUSAND = "仟";
var CN_TEN_THOUSAND = "万";
var CN_HUNDRED_MILLION = "亿";
var CN_SYMBOL = "";
var CN_DOLLAR = "元";
var CN_TEN_CENT = "角";
var CN_CENT = "分";
var CN_INTEGER = "整";
 
// Variables:
var integral; // Represent integral part of digit number.
var decimal; // Represent decimal part of digit number.
var outputCharacters; // The output result.
var parts;
var digits, radices, bigRadices, decimals;
var zeroCount;
var i, p, d;
var quotient, modulus;
 
if (num> MAXIMUM_NUMBER)
{
return "";
}
 
// Process the coversion from currency digits to characters:
// Separate integral and decimal parts before processing coversion:  parts = (num + "").split(".");
if (parts.length > 1) 
{
integral = parts[0];
decimal = parts[1];
// Cut down redundant decimal digits that are after the second.
decimal = decimal.substr(0, 2);
}
else 
{
integral = parts[0];
decimal = "";
}
// Prepare the characters corresponding to the digits:
digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
decimals = new Array(CN_TEN_CENT, CN_CENT);  // Start processing:
 outputCharacters = "";
// Process integral part if it is larger than 0:
if (Number(integral) > 0) 
{
zeroCount = 0;
for (i = 0; i < integral.length; i++) 
{
p = integral.length - i - 1;
d = integral.substr(i, 1);
quotient = p / 4;
modulus = p % 4;
if (d == "0") 
{
zeroCount++;
}
else 
{
if (zeroCount > 0)
{
outputCharacters += digits[0];
}
zeroCount = 0;
outputCharacters += digits[Number(d)] + radices[modulus];
} if (modulus == 0 && zeroCount < 4) 
{
outputCharacters += bigRadices[quotient];
}
} outputCharacters += CN_DOLLAR;
} // Process decimal part if there is:
if (decimal != "") 
{
for (i = 0; i < decimal.length; i++) 
{
d = decimal.substr(i, 1);
if (d != "0") 
{
outputCharacters += digits[Number(d)] + decimals[i];
}
}
} // Confirm and return the final output string:
if (outputCharacters == "") 
{
outputCharacters = CN_ZERO + CN_DOLLAR;
}
if (decimal == "") 
{
outputCharacters += CN_INTEGER;
} outputCharacters = CN_SYMBOL + outputCharacters;
return outputCharacters;
}

解决方案 »

  1.   

    来个段点的
    function DX(n) {
    var strOutput = "";
    var strUnit = '千百拾亿千百拾万千百拾元角分';
    n += "00";
    var intPos = n.indexOf('.');
    if (intPos >= 0)
    n = n.substring(0, intPos) + n.substr(intPos + 1, 2);
    strUnit = strUnit.substr(strUnit.length - n.length);
    for (var i=0; i < n.length; i++)
    strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(n.substr(i,1),1) + strUnit.substr(i,1);
    return strOutput;
    }
    alert(DX(1056002304.03));
      

  2.   

    ps:function toMoney(num)看看
    alert(DX(1000000004.03));
    alert(toMoney(1000000004.03));
    的效果
      

  3.   

    meizz(梅花雪) 原创.function Chinese(num)
    {
        if(!/^\d*(\.\d*)?$/.test(num)){alert("Number is wrong!"); return false;}    var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
        var BB = new Array("元","拾","佰","仟","萬","億","","");
        var CC = new Array("角","分","厘");
        
        var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";    for(var i=a[0].length-1; i>=0; i--)
        {
            switch(k)
            {
                case 0 : re = BB[7] + re; break;
                case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
                         re = BB[4] + re; break;
                case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
            }
            if(k%4 == 2 && a[0].charAt(i+2) != 0 && a[0].charAt(i+1) == 0) re = AA[0] + re;
            if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
        }    if(a.length>1) //加上小数部分(如果有小数部分)
        {
            re += BB[6];
            for(var i=0; i<a[1].length; i++)
            {
              if(i>2) break;
              re += AA[a[1].charAt(i)] + CC[i];
            }
        }
        return re;
    }
    alert(Chinese("1000200003.456789"))