Skip to content

Instantly share code, notes, and snippets.

@TRex22
Last active August 29, 2015 14:13
Show Gist options
  • Save TRex22/7b4b4fe8e9d8bc677444 to your computer and use it in GitHub Desktop.
Save TRex22/7b4b4fe8e9d8bc677444 to your computer and use it in GitHub Desktop.
A Large Number Formatter
var formatLargeNumbers = function (maxNumberToDisplay, maxPlaces, forcePlaces, forceLetter, forceToolTip) {
$(document).ready(function () {
applyFormatting();
});
function applyFormatting() {
$(".large-number-format").each(function() {
var number = $(this).html();
if (number && !isNaN(number) && number > maxNumberToDisplay) {
$(this).html(largeNumberFormatter(number));
}
if (forceToolTip) {
$(this).tooltip({
track: true,
position: { my: "bottom", at: "bottom" }
});
$(this).title = number;
$(this).attr("data-original-title", number);
}
});
}
function largeNumberFormatter(number) {
number = Number(number);
forceLetter = forceLetter || false;
if (forceLetter !== false) {
return annotate(number);
}
var abbr;
if (number >= 1e12) {
abbr = 'T';
} else if (number >= 1e9) {
abbr = 'B';
} else if (number >= 1e6) {
abbr = 'M';
} else if (number >= 1e3) {
abbr = 'K';
} else {
abbr = '';
}
return annotate(number, abbr);
}
function annotate(number, abbr) {
// set places to false to not round
var rounded = 0;
switch (abbr) {
case 'T':
rounded = number / 1e12;
break;
case 'B':
rounded = number / 1e9;
break;
case 'M':
rounded = number / 1e6;
break;
case 'K':
rounded = number / 1e3;
break;
case '':
rounded = number;
break;
}
if (maxPlaces !== false) {
var test = new RegExp('\\.\\d{' + (maxPlaces + 1) + ',}$');
if (test.test(('' + rounded))) {
rounded = rounded.toFixed(maxPlaces);
}
}
if (forcePlaces !== false) {
rounded = Number(rounded).toFixed(forcePlaces);
}
return rounded + abbr;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment