长期划分长回报0

时间:2013-08-08 02:34:26

标签: java

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

 long totaloccupied = totaldrive - freedrive;

此处计算使用百分比

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

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

3 个答案:

答案 0 :(得分:51)

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

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

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

答案 1 :(得分:5)

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

double percentageUsed = 100.0 * totalOccupied / totalDrive;

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

答案 2 :(得分:1)

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