java – 动态地将KB转换为MB,GB,TB

public String size(int size){
    String hrSize = "";
    int k = size;
    double m = size/1024;
    double g = size/1048576;
    double t = size/1073741824;

    DecimalFormat dec = new DecimalFormat("0.00");

    if (k>0)
    {

        hrSize = dec.format(k).concat("KB");

    }
    if (m>0)
    {

        hrSize = dec.format(m).concat("MB");
    }
    if (g>0)
    {

        hrSize = dec.format(g).concat("GB");
    }
    if (t>0)
    {

        hrSize = dec.format(t).concat("TB");
    }

    return hrSize;
    }

这是一种应返回GB,MB,KB或TB大小的方法.输入值以KB为单位.
例如1245的结果应该像1.21MB,但我得到的是1.00MB.

解决方法:

您正在执行整数除法.所以除法的结果也是整数.小数部分被截断.

so, 1245 / 1024 = 1

将您的部门改为浮点部门: –

double m = size/1024.0;
double g = size/1048576.0;
double t = size/1073741824.0;

此外,您的比较是错误的.你应该用1进行比较.

if (m > 1), if (t > 1), if (g > 1)

理想情况下,我会将您的比较改为: –

    if (t > 1) {
        hrSize = dec.format(t).concat("TB");
    } else if (g > 1) {
        hrSize = dec.format(g).concat("GB");
    } else if (m > 1) {
        hrSize = dec.format(m).concat("MB");
    } else {
        hrSize = dec.format(size).concat("KB");
    }

您需要先与较高的单位进行比较,然后再移到较低的单位.

上一篇:java – 双值返回0


下一篇:yum安装mysql最新版本