rory-h
rory-h

Reputation: 680

Add comma separator to a numbers with 2 decimal points

I've managed to make the user input to 2 decimal points: enter image description here Below is my code for two input fields:

$('.ave-daily-accbalance').blur(function(){
    var num = parseFloat($(this).val()) || 0;
    var cleanNum = num.toFixed(2);
    $(this).val(cleanNum);

    });

    $('.facilitylimit').blur(function(){
    var num = parseFloat($(this).val()) || 0;
    var cleanNum = num.toFixed(2);
    $(this).val(cleanNum);

    });

But now I want to seperate the input with comma. So if the user inputs in 500000 - it automatically converts to 500,000.00

Upvotes: 0

Views: 80

Answers (3)

Jeffrey Z
Jeffrey Z

Reputation: 76

You can use Number.prototype.toLocaleString() (documentation) In your case you want to use the second options parameter to specify the number of decimal points you want:

var num = 200000.001231;
var cleanNum = num.toLocaleString('en', {minimumFractionDigits: 2, maximumFractionDigits: 2});
console.log(cleanNum);

Note that the options argument does not work on all browser and versions. If compatibility is key, use num.toLocaleString() with no arguments, and trim/append decimals as needed:

var num = 20000.001231;
var cleanNum = num.toLocaleString('en');
var splitNum = cleanNum.split('.');
if (splitNum.length < 2) {
  // Need to append .00 if num was an integer
  cleanNum = cleanNum + '.00';
} else {
  // Append 0 if there was only 1 decimal, otherwise trim
  // to 2 decimals
  var decimals = splitNum[1];
  decimals = decimals.length < 2 ? decimals + '0' : decimals.slice(0, 2);
  cleanNum = splitNum[0] + '.' + decimals;
}
console.log(cleanNum);

Hope this helps!

Upvotes: 2

Ibrahim
Ibrahim

Reputation: 6088

Try this:

var n = "76432949.13354";
var nf = Number(parseFloat(n).toFixed(2)).toLocaleString('en');
document.write (nf);

Upvotes: 0

HenryDev
HenryDev

Reputation: 4953

How about this solution. Hope it helps!

var x = 500000;
function formatNumber(num) {
    var arr = num.toFixed(2).split(".");
    return arr[0].split("").reduceRight(function(acc, num, i, orig) {
        if ("-" === num && 0 === i) {
            return num + acc;
        }
        var pos = orig.length - i - 1
        return  num + (pos && !(pos % 3) ? "," : "") + acc;
    }, "") + (arr[1] ? "." + arr[1] : "");
}
console.log(formatNumber(x));

Upvotes: 1

Related Questions