humanInt

Make large numbers readable

by Bart Kalisz

HTML

<input id="in" type="number" value="3224" />
<input id="out" type="text" />

CSS

input {
	font-size: 20px
}

JavaScript

function humanInt(n, p) {
	var nAbs = Math.abs(n);

	if (nAbs < 1e3) return n;
	
	var s = [ "k", "M", "G", "T", "P", "E", "Z", "Y" ],
			sign = Math.sign(n), i = s.length, t;

	for (i; i >= 0; i--) {
		t = Math.pow(1e3, i);
		if (nAbs >= t) {
			return (sign * nAbs / t)
				.toFixed(p || ((nAbs % t) >= (t / 20) ? 1 : 0))
				.concat(s[i - 1]);
		}
	}
};

Number.prototype.humanInt = function(p) {
	return humanInt(this, p);
};

function update() {
	var input = document.getElementById("in"),
			output = document.getElementById("out"),
			writeToOutput = function() {
				output.value = Number(input.value).humanInt();	
			};

	input.oninput = writeToOutput;
	writeToOutput();
}

update();