37

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

 long totaloccupied = totaldrive - freedrive;

这里计算使用百分比

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

打印语句返回 0。有人可以帮忙,因为我没有得到想要的值

4

3 回答 3

61

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

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

Long Percentageused = (long)((float)totaloccupied/totaldrive*100);
于 2013-08-08T02:39:54.197 回答
7

你正在做整数除法!既然totaloccupied小于totaldrive,两者的划分就给出了答案0。您应该先转换为双精度:

double percentageUsed = 100.0 * totalOccupied / totalDrive;

请注意,将小数点添加到100确保它被视为double.

于 2013-08-08T02:38:23.673 回答
1

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

于 2013-08-08T02:37:52.830 回答