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數的數字