Given a number, format it to a currency. For example 93635617 => $93,635,617.
Formatting from right to left makes the solution fairly straightforward.
function formatNumber(numberToFormat) {
let digits = String(numberToFormat);
let count = 0;
let formatted = "";
let numbers = digits.split(".");
digits = numbers[0];
let fraction = numbers[1];
for (let i = digits.length - 1; i >= 0; i--) {
count++;
formatted = digits[i] + formatted;
if (count === 3 && i > 0) {
formatted = "," + formatted;
count = 0;
}
}
if (fraction) {
if (fraction.length > 2) {
fraction = fraction.substring(0, 2);
}
return "$" + formatted + "." + fraction;
}
return "$" + formatted;
}
console.log(formatNumber(35654671.77)); // $35,654,671.77
console.log(formatNumber(35654671.77888)); // $35,654,671.77
console.log(formatNumber(35654671)); // $35,654,671
console.log(formatNumber(5654671)); // $5,654,671
console.log(formatNumber(654671)); // $654,671