Code of the day: Converts Bytes to Simplify Units

A few days ago I noticed that my “code of the day” article was wrong. So I spent some time fixing it and provided test cases to check my work.
The main difference about this script is that it allows you to support both the SI and IEC standard and fixes a few rounding errors.

// function: getBytesWithUnit
// input: bytes (number)
// input: useSI (boolean), if true then uses SI standard (1KB = 1000bytes), otherwise uses IEC (1KiB = 1024 bytes)
// input: precision (number), sets the maximum length of decimal places.
// input: useSISuffix (boolean), if true forces the suffix to be in SI standard. Useful if you want 1KB = 1024 bytes
// returns (string), represents bytes is the most simplified form.
var getBytesWithUnit = function (bytes, useSI, precision, useSISuffix) {
	"use strict";
	if (!(!isNaN(bytes) && +bytes > -1 && isFinite(bytes))) {
		return false;
	}
	var units, obj,	amountOfUnits, unitSelected, suffix;
	units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
	obj = {
		base : useSI ? 10 : 2,
		unitDegreeDiff : useSI ? 3 : 10
	};
	amountOfUnits = Math.max(0, Math.floor(Math.round(Math.log(+bytes) / Math.log(obj.base) * 1e6) / 1e6));
	unitSelected = Math.floor(amountOfUnits / obj.unitDegreeDiff);
	unitSelected = units.length > unitSelected ? unitSelected : units.length - 1;
	suffix = (useSI || useSISuffix) ? units[unitSelected] : units[unitSelected].replace('B', 'iB');
	bytes = +bytes / Math.pow(obj.base, obj.unitDegreeDiff * unitSelected);
	precision = precision || 3;
	if (bytes.toString().length > bytes.toFixed(precision).toString().length) {
		bytes = bytes.toFixed(precision);
	}
	return bytes + " " + suffix;
};




Demo: Test Script here


Want to learn more about Javascript?
Check out this “Professional JavaScript for Web Developers”.

Try out lumzy for your mockup creation and prototyping needs. 100% free



I haven’t been paid to say this. I just want others to know about Lumzy instead of paying for similar mockup software that does the same thing.

Book review for “Become Your Own Boss in 12 Months”

I'm my own boss
I'm my own boss

Here’s a book review I did on amazon.com

I’ve started a few small businesses that failed because of poor planning & structure.
Seeking for a change, I picked up this highly rated book on entrepreneurship to find out the essential skills and techniques needed to build a successful company.
Having finished this book, I’ve found what I’ve been searching for and realized my mistakes.
For example, I’m now aware that before I start my next company I need to develop a solid business plan, eliminate my debt, save up a year worth of operational cost and read this book again.
I really enjoyed reading this book since it’s simple, straight forwards and offers “Emerson’s Action Steps”, a list summarizing each chapter.

This book covers all the aspects of a start-up, from forming a life and financial plan to marketing and hiring employees.
I recommend “Become your own boss in 12 months” for anyone starting up a business, whether on-line or off-line.

Thanks Melinda Emerson for sharing your insightful knowledge to the world.

Become Your Own Boss in 12 Months

Video of the day: New device makes wheelchairs obsolete

Bad Behavior has blocked 1087 access attempts in the last 7 days.

FireStats icon Powered by FireStats