Java divison有两个整数操作数不起作用?

Eva*_*win 1 java math

由于某种原因,我的数学只返回0.值已设置,我已检查.

int currentSize = 4079;
int totalSize = 500802;

int percentage = ((currentSize/totalSize) * 100);
progdialog.setProgress(percentage);
Run Code Online (Sandbox Code Playgroud)

百分比总是等于百分比.为什么?

Ted*_*opp 9

正如其他人所指出的那样,问题是整数除法会将小于1的任何值变为零.这在乘以100之前发生.您可以更改操作的顺序以获得更好的效果:

int percentage = currentSize * 100 / totalSize;
Run Code Online (Sandbox Code Playgroud)

如果你担心四舍五入,你可以使用

int percentage = (currentSize * 100 + (totalSize >> 1)) / totalSize;
Run Code Online (Sandbox Code Playgroud)

这避免了使用double或float值的费用.