Java中字节到兆字节的转换为零
我在Java中尝试将字节转换为兆字节时遇到了一些问题。我试图做的是:Java中字节到兆字节的转换为零,java,Java,我在Java中尝试将字节转换为兆字节时遇到了一些问题。我试图做的是: long inodeSpace = 100000; long MEGABYTE = 1024L * 1024L; long inodeSpaceInMb = inodeSpace / MEGABYTE; System.out.println("INODE SPACE " + inodeSpace); System.out.println("INOD
long inodeSpace = 100000;
long MEGABYTE = 1024L * 1024L;
long inodeSpaceInMb = inodeSpace / MEGABYTE;
System.out.println("INODE SPACE " + inodeSpace);
System.out.println("INODE MB " + inodeSpaceInMb);
我试图打印出inodeSpaceMb,但是,我得到了0。知道为什么吗?将其中一个转换为
double
,并将结果存储在double
中。比如:
double inodeSpaceInMb = (double) inodeSpace / MEGABYTE;
如果在进行转换时还希望精确到特定的小数位数,则可以执行以下操作:
public double bytesToMegabytes(long byteValue, int precision) {
if (precision < 0) {
throw new IllegalArgumentException("Precision can not be less than 0!");
}
double mbValue = byteValue * 0.000001;
BigDecimal bigDec = new BigDecimal(mbValue);
bigDec = bigDec.setScale(precision, RoundingMode.HALF_UP);
return bigDec.doubleValue();
}
public double bytesToMegabytes(长字节值,整数精度){
if(精度<0){
抛出新的IllegalArgumentException(“精度不能小于0!”);
}
双mbValue=字节值*0.000001;
BigDecimal bigDec=新的BigDecimal(mbValue);
bigDec=bigDec.设置刻度(精度,舍入模式,向上舍入);
返回bigDec.doubleValue();
}
100000(inodeSpace)/1048576(兆字节)=0。看来这对我来说是正确的,你在做整数除法,任何小于零的结果都会变成零。用double代替。@RickyMo这不完全正确。结果可以小于零,但任何值的尾数都将被截断,即0.73351
变为0
。我明白了,我明白了,非常感谢!