JavaScripteasyJavaScript

Money Formatter

Format numbers as currency with proper symbols and formatting

01

The problem

Need to display monetary values with proper currency formatting

02

The solution

JavaScript
function formatMoney(amount, currency = 'USD', locale = 'en-US') {
  return new Intl.NumberFormat(locale, {
    style: 'currency',
    currency: currency,
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  }).format(amount);
}

// Alternative: Custom formatting without Intl
function formatMoneyBasic(amount, currency = '$', decimalPlaces = 2) {
  const formatted = Math.abs(amount).toFixed(decimalPlaces);
  const sign = amount < 0 ? '-' : '';
  return `${sign}${currency}${formatted.replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`;
}

03

Parameters

amountnumber

The monetary amount to format

currencystring

Currency code (default: 'USD')

localestring

Locale for formatting (default: 'en-US')

04

Put it to work

Example
console.log(formatMoney(1234.56)); // "$1,234.56"
console.log(formatMoney(99.99, 'EUR', 'de-DE')); // "99,99 €"
console.log(formatMoney(5000, 'JPY', 'ja-JP')); // "¥5,000"

// Using basic formatter
console.log(formatMoneyBasic(1234.56)); // "$1,234.56"
console.log(formatMoneyBasic(-99.99, '£')); // "-£99.99"