if (bytes === 0)
return '0 B';
var k = 1000, // or 1024
sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
i = Math.floor(Math.log(bytes) / Math.log(k));//向下取整,用于判断是什么单位
return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];//此处有效数字三位,如果是1000-1024kb之间则显示科学计数法,所以建议保留两位小数.toFixed(2)
}
说明:
使用Math.log
时基于不同的底数
下面的函数返回以 x
为底 y
的对数(即logx y)://
X的多少次方等于y
function getBaseLog(x, y) {
return Math.log(y) / Math.log(x);
}
pow() 方法可返回 x 的 y 次幂的值。toPrecision() 方法可在对象的值超出指定位数时将其转换为指数计数法。
使用不同进制把数字格式化为指定的长度:
返回指定精度的数字格式
var
num = new Number(13.3714);
var a = num.toPrecision();
var b = num.toPrecision(2);
var c = num.toPrecision(3);
var d = num.toPrecision(10);
13.3714
13
13.4
13.37140000
不同于toFixed(n) 方法,后者是可把 Number 四舍五入为指定小数位n数的数字