1

I have a question about decimal numbers. I need to convert my numbers to decimal but I couldn't get what I exactly want.

The numbers that I used on my project.

What I want is:

  • I want to convert 130000 to 130,000 and 20911.56 to 20,911,56 (etc.)

  • First of all I searched in here and found some solutions to change my numbers :

          function number_format(string,decimals=2,decimal=',',thousands='.',pre='R$ ',pos=' Reais'){
              var numbers = string.toString().match(/\d+/g).join([]);
              numbers = numbers.padStart(decimals+1, "0");
              var splitNumbers = numbers.split("").reverse();
              var mask = '';
              splitNumbers.forEach(function(d,i){
                  if (i == decimals) { mask = decimal + mask; }
                  if (i>(decimals+1) && ((i-2)%(decimals+1))==0) { mask = thousands + mask; }
                  mask = d + mask;
              });
              return pre + mask + pos;
          }
          var element = document.getElementById("format");
    
           var money= number_format("130000",2,',','.');
          element.innerHTML = money;
    

This code above gave me 20.911,56 but it didn't give me 130,000. Instead it is 1,300,00.What should I do? Can't I have them on the same time?

Reporter
  • 3,897
  • 5
  • 33
  • 47
  • The answer on this works for both of your cases: https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript – ahsan Sep 09 '21 at 08:36
  • Does this answer your question? [How to print a number with commas as thousands separators in JavaScript](https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript) – Reporter Sep 09 '21 at 08:39

2 Answers2

2

Just use Intl.NumberFormat as follows:

const formatter = new Intl.NumberFormat('en');

console.log(formatter.format(130000)); // 130,000
console.log(formatter.format(20911.56)); // 20,911.56
Robby Cornelissen
  • 91,784
  • 22
  • 134
  • 156
0

This is a bangladeshi format

First create a function

function numberFormat(number, decimals = 0) {
    let decimalNumbers = '';
    if (number.toString().includes('.')) {
        decimalNumbers = number.toString().substr(number.toString().indexOf('.') + 1, decimals);
        
        if (decimalNumbers.length < decimals) {
            for (let i = decimalNumbers.length; i < decimals; i++) {
                decimalNumbers += '0';
            }
        }
    } else {
        decimalNumbers = '0';
        for (let i = 2; i <= decimals; i++) {
            decimalNumbers += '0';
        }
    }

    number = parseInt(number);
    number = number.toString().split('').reverse().join('');

    let n = '';
    const stringLength = number.length;

    for (let i = 0; i < stringLength; i++) {
        if (i === 2 || (i > 2 && i % 2 === 0)) {
            n = n + number[i] + ',';
        } else {
            n = n + number[i];
        }
    }

    number = n.split('').reverse().join('');

    if (decimals !== 0) {
        number = number + '.' + decimalNumbers;
    }

    if (number[0] === ',') {
        number = number.substr(1);
    }
    
    if (number[1] === ',' && number[0] === '-') {
        number = number.substr(0, 1) + number.substr(2);
    }

    return number;
}

Call the function

* numberFormat(5000000, 2)  // Output: 50,00,000.00
* numberFormat(5000000)  // Output: 50,00,000
* numberFormat(-15264.61, 2)  // Output: -15,264.61
* numberFormat(2106.02)  // Output: 2,106
* numberFormat(2.02)  // Output: 2
* numberFormat(21.02)  // Output: 21
* numberFormat(210.02)  // Output: 210
* numberFormat(2106.02)  // Output: 2,106
* numberFormat(21060.02)  // Output: 21,060
* numberFormat(210600.02)  // Output: 2,10,600
* numberFormat(2106000.02)  // Output: 21,06,000
* numberFormat(21060000.02)  // Output: 2,10,6,0,000
* numberFormat(210600000.02)  // Output: 21,06,00,000
* numberFormat(-210600000.0222, 2)  // Output: -21,06,00,000.02