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

我在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。知道为什么吗?

将其中一个转换为
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
。我明白了,我明白了,非常感谢!