JavaScript: Useful number formatting functions
Recently I’ve been developing a lot of reporting applications in JavaScript and have collected a few helper functions that I use regularly for number formatting. Here’s a look at each function and how you can use it in your own projects.
Rounding a number to a defined decimal precision
Input: 1234.567
Output: 1234.6 (to one decimal precision)
Usage:
var myNumOld = 1234.567 var myNumNew = numberPrecision(myNumOld, 1)
Function:
/**
* Returns a rounded number to the precision specified.
* @author Darian Cabot
* @see https://www.dariancabot.com
* @param {Number} value A number to be rounded.
* @param {Number} decimals The number of decimal places to round to.
* @returns the value rounded to the number of decimal places specified.
* @type Number
*/
function numberPrecision(value, decimals)
{
return Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
}
Adding commas to a number to break up thousands
Input: 1234.567
Output: 1,234.567
Usage:
var myNumOld = 1234.567 var myNumNew = addCommas(myNumOld)
Function:
/**
* Formats a numeric string by adding commas for cosmetic purposes.
* @author Keith Jenci
* @see http://www.mredkj.com/javascript/nfbasic.html
* @param {String} nStr A number with or without decimals.
* @returns a nicely formatted number.
* @type String
*/
function addCommas(nStr)
{
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1))
{
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
Adding an ordinal for counting numbers
Input: 23
Output: 23rd
Usage:
var myNumOld = 23 var myNumNew = myNumOld.toOrdinal()
Function:
/**
* Adds an ordinal to a number (e.g. 'st', 'nd', 'rd', 'th').
* @author Venkat K
* @see http://www.eggheadcafe.com/community/aspnet/3/43489/hi.aspx
* @param {Number} A positive number.
* @returns a the original number and a ordinal suffix.
* @type String
*/
Number.prototype.toOrdinal = function()
{
var n = this % 100;
var suffix = ['th', 'st', 'nd', 'rd', 'th'];
var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]);
return this + ord;
}


