Skip to content

Instantly share code, notes, and snippets.

@JosephNC
Created February 16, 2018 04:55
Show Gist options
  • Save JosephNC/e53308aaf53fa85d1aafb5d4d0469cd1 to your computer and use it in GitHub Desktop.
Save JosephNC/e53308aaf53fa85d1aafb5d4d0469cd1 to your computer and use it in GitHub Desktop.
JavaScript equivalent for PHP number format.
/**
* Format a number with grouped thousands
*
* @param number The number being formatted
* @param decimals Sets the number of decimal points
* @param dec_point Sets the separator for the decimal point
* @param thousands_sep Sets the thousands separator
* @returns string A formatted version of number
*/
function number_format( number, decimals, dec_point, thousands_sep ) {
// Strip all characters but numerical ones.
number = ( number + '' ).replace( /[^0-9+\-Ee.]/g, '' );
var n = !isFinite( +number ) ? 0 : +number,
prec = !isFinite( +decimals ) ? 0 : Math.abs( decimals ),
sep = ( typeof thousands_sep === 'undefined' ) ? ',' : thousands_sep,
dec = ( typeof dec_point === 'undefined' ) ? '.' : dec_point,
s = '',
toFixedFix = function ( n, prec ) {
var k = Math.pow( 10, prec );
return '' + ( Math.round( n * k ) / k ).toFixed(prec);
};
// Fix for IE parseFloat(0.55).toFixed(0) = 0;
s = ( prec ? toFixedFix( n, prec ) : '' + Math.round( n ) ).split( '.' );
if ( s[0].length > 3 ) {
s[0] = s[0].replace( /\B(?=(?:\d{3})+(?!\d))/g, sep );
}
if ( ( s[1] || '' ).length < prec ) {
s[1] = s[1] || '';
s[1] += new Array( prec - s[1].length + 1 ).join( '0' );
}
return s.join( dec );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment