Aycan Yerdelen
Aycan Yerdelen

Reputation: 40

Javascript number format to decimal

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:


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?

Upvotes: 2

Views: 1694

Answers (2)

Md. Saifur Rahman
Md. Saifur Rahman

Reputation: 404

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

Upvotes: 0

Robby Cornelissen
Robby Cornelissen

Reputation: 97120

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

Upvotes: 3

Related Questions