字节转KB、MB、GB等单位是比较常用的方法了,以下两个函数代码思路来自知乎,仅供学习参考。
未优化版:
function byteFormat(value, precision) {
var suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
var factor = Math.pow(10, precision != null ? precision : 2);
var suffix = 0;
while(value >= 1024 && suffixes[++suffix] && suffix < suffixes.length) {
value /= 1024;
}
if (suffix >= suffixes.length) {
suffix = suffixes.length - 1;
}
return (Math.round(value * factor) / factor) + ' ' + suffixes[suffixes];
}
优化版:
function byteFormat(value, precision) {
var suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
var factor = Math.pow(10, precision != null ? precision : 2);
var suffix = Math.min(~~(Math.log(value) / Math.log(1024)), suffixes.length - 1);
var num = Math.ceil(value / Math.pow(1024, suffix) * factor) / factor;
return num + ' ' + suffixes[suffix];
}