2011-11-12 44 views
0

我正在下載各種大小的文件,並喜歡到
顯示關於文件大小的用戶友好輸出。java將GB,Mb,KB和字節精確地加倍

我已經試過這樣:

double line= (totalBytes/(1024*1024)); 
DecimalFormat dec = new DecimalFormat("0.00"); 
String result = dec.format(line); 
result = result.concat("MB"); 

,只有當大小約爲一個MB工作。如果大小是1200000字節,我會得到「1.2MB」。
但是,如果讓說文件大小是46字節如何使它動態。

UPDATE 如何顯示大小爲46像這樣的字節0.000046MB或顯示500KB這樣的0.5MB。
這必須在飛行中完成。我希望用戶友好的輸出始終顯示X.XMB
而不管字節數是多少。

+1

順便說一句,'(totalBytes /(1024 * 1024))'做基於整數的除法。嘗試'totalBytes /(double)(1024 * 1024))'來獲得浮點結果。 – asgs

回答

3

最簡單的解決方案是檢查數字是否大於/小於一個因子並相應地應用除法。

所以

if (totalBytes < 1024){ 

//bytes 
}else if (totalBytes < 1024*1024){ 
//kilobytes 

} //etc 
+0

是的,這是我想要的。但是如何顯示4600字節的大小,例如0.000046MB或顯示500KB這樣的0.5MB。我更新我的問題,這是工資 – Erik

+1

(雙)totalBytes /(雙)(1024 * 1024) 但是,然後不要格式小數爲0.00。除非你打算把它放在天花板上。但我幾乎認爲0.000046MB是'用戶友好輸出' – Haedrian

+0

將嘗試一些現在感謝 – Erik

1

當然,你需要

double line= ((double)totalBytes/(1024*1024)); 
+0

謝謝。順便說一句,即時更新問題,因爲很難確定我需要什麼。 – Erik