Format numbers in JavaScript similar to C#

后端 未结 18 2383
傲寒
傲寒 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 12:56

    You can do it in the following way: So you will not only format the number but you can also pass as a parameter how many decimal digits to display, you set a custom decimal and mile separator.

    function format(number, decimals = 2, decimalSeparator = '.', thousandsSeparator = ',') {
        const roundedNumber = number.toFixed(decimals);
        let integerPart = '', fractionalPart = '';
        if (decimals == 0) {
            integerPart = roundedNumber;
            decimalSeparator = '';
        } else {
            let numberParts = roundedNumber.split('.');
            integerPart = numberParts[0];
            fractionalPart = numberParts[1];
        }
        integerPart = integerPart.replace(/(\d)(?=(\d{3})+(?!\d))/g, `$1${thousandsSeparator}`);
        return `${integerPart}${decimalSeparator}${fractionalPart}`;
    }
    

    Use:

    let min = 1556454.0001;
    let max = 15556982.9999;
    console.time('number format');
    for (let i = 0; i < 15000; i++) {
        let randomNumber = Math.random() * (max - min) + min;
    
        let formated = format(randomNumber, 4, ',', '.'); // formated number
    
        console.debug('number: ', randomNumber, 'formated: ', formated);
    }
    console.timeEnd('number format');
    

提交回复
热议问题