Dear Lazyweb,

Is there a better method than this to format numeric amounts? Here's a solution I picked up from somewhere and slightly modified. It's heavily string based but passed the tests:


function format_amount(i) {
  if(isNaN(i)) { i = 0.00; }
  var minus = '';
  if(i < 0) { minus = '-'; }
  i = Math.abs(i);
  i = parseInt((i + .005) * 100);
  i = i / 100;
  s = new String(i);
  if(s.indexOf('.') < 0) { s += '.00'; }
  if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
  s = minus + s;
  return s;
}

The "tests" are:


format_amount(100)       == "100.00";
format_amount(100.0)     == "100.00";
format_amount(100.05)    == "100.05";
format_amount(100.051)   == "100.05";
format_amount(-100)      == "-100.00";
format_amount(-100.0)    == "-100.00";
format_amount(-123.45)   == "-123.45";
format_amount(-123.450)  == "-123.45";

So functionally it's OK but I'm not sure it's the best way to do it.

Comments

djo

Google for "javascript sprintf" throws a few things up. More code, but at least printf format strings are pretty universal.

Your email will never ever be published.

Previous:
Earth, observed - The Big Picture - Boston.com January 16, 2009
Next:
Nasty surprise of Django and gettext January 18, 2009 Django
Related by category:
Always run biome migrate after upgrading biome August 16, 2025 JavaScript
Video to Screenshots app June 21, 2025 JavaScript
Starting a side project: PissueTracker March 16, 2025 JavaScript
An ideal pattern to combine React Router with TanStack Query November 18, 2024 JavaScript
Related by keyword:
First impressions trying out Rome to format/lint my TypeScript and JavaScript November 14, 2022 Node, JavaScript
Credit Card formatter in Javascript November 19, 2013 JavaScript
Comparing REAL values in PostgreSQL February 7, 2007 Linux
Date formatting in python or in PostgreSQL July 20, 2004 Python