长期划分长回报0

use*_*823 29 java

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

 long totaloccupied = totaldrive - freedrive;
Run Code Online (Sandbox Code Playgroud)

这里计算使用百分比

 Long Percentageused =(totaloccupied/totaldrive*100);
 System.out.println(Percentageused);
Run Code Online (Sandbox Code Playgroud)

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

Lak*_*ake 52

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

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

Long Percentageused = (long)((float)totaloccupied/totaldrive*100);
Run Code Online (Sandbox Code Playgroud)


gdi*_*azc 5

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

double percentageUsed = 100.0 * totalOccupied / totalDrive;
Run Code Online (Sandbox Code Playgroud)

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