Format Currency

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 format_number(number_to_format) {
  let digits = String(number_to_format)    
  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(format_number(35654671.77))
console.log(format_number(35654671.77888))
console.log(format_number(35654671))
console.log(format_number(5654671))
console.log(format_number(654671))

$35,654,671.77
$35,654,671.77
$35,654,671
$5,654,671
$654,671
Scroll to top