Format numbers in JavaScript similar to C#

后端 未结 18 2299
傲寒
傲寒 2020-11-22 12:26

Is there a simple way to format numbers in JavaScript, similar to the formatting methods available in C# (or VB.NET) via ToString(\"format_provider\") or

18条回答
  •  失恋的感觉
    2020-11-22 13:01

    To further jfriend00's answer (I dont't have enough points to comment) I have extended his/her answer to the following:

    function log(args) {
        var str = "";
        for (var i = 0; i < arguments.length; i++) {
            if (typeof arguments[i] === "object") {
                str += JSON.stringify(arguments[i]);
            } else {
                str += arguments[i];
            }
        }
        var div = document.createElement("div");
        div.innerHTML = str;
        document.body.appendChild(div);
    }
    
    Number.prototype.addCommas = function (str) {
        if (str === undefined) {
        	str = this;
        }
        
        var parts = (str + "").split("."),
            main = parts[0],
            len = main.length,
            output = "",
            first = main.charAt(0),
            i;
        
        if (first === '-') {
            main = main.slice(1);
            len = main.length;    
        } else {
        	  first = "";
        }
        i = len - 1;
        while(i >= 0) {
            output = main.charAt(i) + output;
            if ((len - i) % 3 === 0 && i > 0) {
                output = "," + output;
            }
            --i;
        }
        // put sign back
        output = first + output;
        // put decimal part back
        if (parts.length > 1) {
            output += "." + parts[1];
        }
        return output;
    }
    
    var testCases = [
        1, 12, 123, -1234, 12345, 123456, -1234567, 12345678, 123456789,
        -1.1, 12.1, 123.1, 1234.1, -12345.1, -123456.1, -1234567.1, 12345678.1, 123456789.1
    ];
     
    for (var i = 0; i < testCases.length; i++) {
    	log(testCases[i].addCommas());
    }
     
    /*for (var i = 0; i < testCases.length; i++) {
        log(Number.addCommas(testCases[i]));
    }*/

提交回复
热议问题