JavaScript 乘法bug及格式化小数位数

格式化
function formatNumber (num, decplaces) {
    // convert in case it arrives as a string value
    num = parseFloat(num);
    // make sure it passes conversion
    if (!isNaN(num)) {
        // multiply value by 10 to the decplaces power;
        // round the result to the nearest integer;
        // convert the result to a string
        var str = "" + Math.round (eval(num) * Math.pow(10,decplaces));
        // exponent means value is too big or small for this routine
        if (str.indexOf("e") != -1) {
            return "Out of Range";
        }
        // if needed for small values, pad zeros
        // to the left of the number
        while (str.length <= decplaces) {
            str = "0" + str;
        }
        // calculate decimal point position
        var decpoint = str.length - decplaces;
        // assemble final result from: (a) the string up to the position of
        // the decimal point; (b) the decimal point; and (c) the balance
        // of the string. Return finished product.
        return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
    } else {
        return "NaN";
    }
}

乘法Bug
function mul(n1, n2) {
    var m=0, s1=n1.toString(), s2=n2.toString();
    try {
        m += s1.split(".")[1].length
    } catch(e) {
    }
    try {
        m += s2.split(".")[1].length
    } catch(e){
    }
    return Number(s1.replace(".","")) * Number(s2.replace(".","")) / Math.pow(10, m)
}
posted @ 2008-10-15 10:43  DreamTrue  阅读(816)  评论(0编辑  收藏  举报