How to avoid scientific notation for large numbers in JavaScript?

后端 未结 22 2524
無奈伤痛
無奈伤痛 2020-11-22 00:31

JavaScript converts a large INT to scientific notation when the number becomes large. How can I prevent this from happening?

22条回答
  •  孤街浪徒
    2020-11-22 00:48

    The answers of others do not give you the exact number!
    This function calculates the desired number accurately and returns it in the string to prevent it from being changed by javascript!
    If you need a numerical result, just multiply the result of the function in number one!

    function toNonExponential(value) {
        // if value is not a number try to convert it to number
        if (typeof value !== "number") {
            value = parseFloat(value);
    
            // after convert, if value is not a number return empty string
            if (isNaN(value)) {
                return "";
            }
        }
    
        var sign;
        var e;
    
        // if value is negative, save "-" in sign variable and calculate the absolute value
        if (value < 0) {
            sign = "-";
            value = Math.abs(value);
        }
        else {
            sign = "";
        }
    
        // if value is between 0 and 1
        if (value < 1.0) {
            // get e value
            e = parseInt(value.toString().split('e-')[1]);
    
            // if value is exponential convert it to non exponential
            if (e) {
                value *= Math.pow(10, e - 1);
                value = '0.' + (new Array(e)).join('0') + value.toString().substring(2);
            }
        }
        else {
            // get e value
            e = parseInt(value.toString().split('e+')[1]);
    
            // if value is exponential convert it to non exponential
            if (e) {
                value /= Math.pow(10, e);
                value += (new Array(e + 1)).join('0');
            }
        }
    
        // if value has negative sign, add to it
        return sign + value;
    }
    

提交回复
热议问题