檔案大小獲取到的是以b(位元組)為單位,在頁面上顯示時,需要先格式化一下。一開始用的是if..else..,幸好實際中檔案大小頂多達到t級,進行4次判斷就可以了。但這終究不是個好方法,琢磨著可以迴圈來實現。
先了解下進製間的轉換規則:
1 b = 2 10*0 b
1 k = 210 * 1 b
1 m = 210 k = 210*2 b
1 g = 210 m = 220 k =210*3 b
1 t = 210 g= 220 m = 230 k = 210*4 b
這樣一來,實現起來就很簡單了:
function formatsize (filesize)
filesize = filesize.tofixed(2);
return filesize + " " + arrunit[unitindex];
}
後來看到花兒同學的實現,禁不住想要再讚下,巧妙地運用了對數函式求解,關鍵**僅有一句話:
[var size =roundfun(srcsize/math.pow(1024,(index=math.floor(math.log(srcsize)/math.log(1024)))),2); ]
(math.log – 以 自然數 e 為底的對數 ln)
一步一步分解如下:
fsize = (210)n b =1024n b
n = log1024 fsize = ln fsize / ln 1024
n = floor(n) (向下取整)
size = fsize / power(1024, n)
既然是用對數,難道沒有以2為底的對數麼?
查了下math函式,是有log2 方法的,改進下: fsize = 210*n b; n = log2 fsize / 10; …
最終的實現方法是:
function formatsize (filesize)
PHP檔案大小格式化函式合集
比如碰到乙個很大的檔案有49957289167b,大家一看這麼一長串的數字後面單位是位元組b,還是不知道這個檔案的大小是乙個什麼概念,我們把它轉換成gb為單位,就是46.53gb。用下面這些函式就可以完成這個工作 如下 轉換單位 function setupsize filesize sizenam...
C 格式化檔案大小
使用c 的方式格式化檔案大小,如下 格式化檔案大小的c 方法 檔案的大小,傳入的是乙個bytes為單位的引數 格式化後的值 private static string getfilesize long filesize else if filesize 1024 1024 1024 檔案大小大於或等...
日期型別的格式化和檔案大小的格式化
日期格式化 格式化字串的方法 string.format 日期格式化的參考 標準日期和時間格式字串 日期型別的格式化中,長格式與短格式指作業系統的區域選項的格式設定。date formats are very dependant on the culture information passed.t...