在Java中尝试将字节转换为兆字节时遇到了一些问题。我试图做的是:
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。为什么这样?
答案 0 :(得分:2)
将两者之一投射到double
中,并将结果存储在double
中。喜欢:
double inodeSpaceInMb = (double) inodeSpace / MEGABYTE;
答案 1 :(得分:0)
如果在转换时还希望精确到小数点后一位,则可以执行以下操作:
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();
}