Java_Android 将字节数(long) 转化为KB,MB

之前遇到了字节转化对应KB/MB的问题,这里记录一下,以便学习交流,不足之处,敬请指出.废话不多说,上代码.

private String getFormatSize(long size) {
        //这里限定了输入 1T以内 不包括1T
        if (size <= 0 || size >= 1024 * 1024 * 1024) {
            throw new RuntimeException("输入异常");
        }

        //这里可能出现转换异常
        double dSize = 0;
        try {
            dSize = size;
        } catch (Exception e) {
            e.printStackTrace();
        }

        //除数因子
        double divideBasic = 1024;

        if (size < 1024) { //1kb以内
            if (size < 1000) {
                return String.valueOf(size + "B");
            } else { //大于1000B,转化为kb,基于用户习惯
                return String.format("%.2f", dSize / divideBasic) + "K";
            }
        } else if (size < 1024 * 1024) { //1M以内
            if (size < 1024 * 1000) {
                return String.format("%.2f", dSize / divideBasic) + "K";
            } else {//大于1000Kb,转化为M
                return String.format("%.2f", dSize / divideBasic / divideBasic) + "M";
            }
        } else { //1TB以内
            if (size < 1024 * 1024 * 1000) {
                return String.format("%.2f", dSize / divideBasic / divideBasic) + "M";
            } else {//大于1000Mb,转化为T
                return String.format("%.2f", dSize / divideBasic / divideBasic / divideBasic) + "T";
            }
        }
    }

有几个问题需说明:
1,数值大于1T的没做处理,基本满足日常开发对转换的需求
2,"%.2f" 其中.2表示保留小数点后两位,如果是.3则保留3位,以此类推

你可能感兴趣的:(Java_Android 将字节数(long) 转化为KB,MB)