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");
}
您需要先与较高的单位进行比较,然后再移到较低的单位.