之前遇到了字節(jié)轉(zhuǎn)化對(duì)應(yīng)KB/MB的問(wèn)題,這里記錄一下,以便學(xué)習(xí)交流,不足之處,敬請(qǐng)指出.廢話不多說(shuō),上代碼.
private String getFormatSize(long size) {
//這里限定了輸入 1T以內(nèi) 不包括1T
if (size <= 0 || size >= 1024 * 1024 * 1024) {
throw new RuntimeException("輸入異常");
}
//這里可能出現(xiàn)轉(zhuǎn)換異常
double dSize = 0;
try {
dSize = size;
} catch (Exception e) {
e.printStackTrace();
}
//除數(shù)因子
double divideBasic = 1024;
if (size < 1024) { //1kb以內(nèi)
if (size < 1000) {
return String.valueOf(size + "B");
} else { //大于1000B,轉(zhuǎn)化為kb,基于用戶習(xí)慣
return String.format("%.2f", dSize / divideBasic) + "K";
}
} else if (size < 1024 * 1024) { //1M以內(nèi)
if (size < 1024 * 1000) {
return String.format("%.2f", dSize / divideBasic) + "K";
} else {//大于1000Kb,轉(zhuǎn)化為M
return String.format("%.2f", dSize / divideBasic / divideBasic) + "M";
}
} else { //1TB以內(nèi)
if (size < 1024 * 1024 * 1000) {
return String.format("%.2f", dSize / divideBasic / divideBasic) + "M";
} else {//大于1000Mb,轉(zhuǎn)化為T
return String.format("%.2f", dSize / divideBasic / divideBasic / divideBasic) + "T";
}
}
}
有幾個(gè)問(wèn)題需說(shuō)明:
1,數(shù)值大于1T的沒(méi)做處理,基本滿足日常開(kāi)發(fā)對(duì)轉(zhuǎn)換的需求
2,"%.2f" 其中.2表示保留小數(shù)點(diǎn)后兩位,如果是.3則保留3位,以此類推