由于某种原因,我的数学运算仅返回0。已检查了该值。

int currentSize = 4079;
int totalSize = 500802;

int percentage = ((currentSize/totalSize) * 100);
progdialog.setProgress(percentage);


百分比始终等于百分比。
为什么?

最佳答案

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

int percentage = currentSize * 100 / totalSize;


如果您担心舍入,可以使用

int percentage = (currentSize * 100 + (totalSize >> 1)) / totalSize;


这些避免了使用double或float值的开销。

09-28 05:15