'use strict'; var numberIsNan = require('number-is-nan'); module.exports = function (num) { if (typeof num !== 'number' || numberIsNan(num)) { throw new TypeError('Expected a number, got ' + typeof num); } var exponent; var unit; var neg = num < 0; var units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; if (neg) { num = -num; } if (num < 1) { return (neg ? '-' : '') + num + ' B'; } exponent = Math.min(Math.floor(Math.log(num) / Math.log(1000)), units.length - 1); num = Number((num / Math.pow(1000, exponent)).toFixed(2)); unit = units[exponent]; return (neg ? '-' : '') + num + ' ' + unit; };