长期除以长0

我试图计算Windows中已用磁盘空间的百分比,而totaldrive表示Long中的C驱动器的总磁盘空间和Long中的freedrive dentoes可用空间。

long totaloccupied = totaldrive - freedrive; 

这里计算使用百分比

  Long Percentageused =(totaloccupied/totaldrive*100); System.out.println(Percentageused); 

print语句返回0.有人可以提供帮助,因为我没有得到所需的值

你可能将long除以long,它指的是(long / long = long)操作,给出一个很长的结果(在你的情况下为0)。

您可以通过将除法的操作数强制转换为浮点类型来实现相同的function。

 Long Percentageused = (long)((float)totaloccupied/totaldrive*100); 

你正在进行整数除法! 由于总totaloccupied小于总totaldrive ,因此两者的除法给出了答案0 。 你应该先转换为双倍:

 double percentageUsed = 100.0 * totalOccupied / totalDrive; 

请注意,将小数点添加到100可确保将其视为double

这将从左到右进行评估,第一个整数除法将返回0(例如8/10评估为0)。 将值转换为浮点数或执行100 * a / b。 浮点数将为您提供更精确的结果。