我正在制作的程序类别之一是下载管理器。这是我处理下载及其百分比的主要代码。

byte data[] = new byte[1024];
        int count;
        while ((count = in.read(data, 0, 1024)) != -1)
        {
            downloadedPerc += (count/getModPackSize())*100;
            System.out.println(downloadedPerc);
            progressBar.setValue((int) downloadedPerc);
            label.setText(downloadedPerc + "%");
            fout.write(data, 0, count);
        }


downloadedPerc的类型为double。作为控制台输出,我一直都得到0.0。为什么会这样呢?
我的下载速度现在非常慢,大约为5kb / sec,如果我删除%计算,下载速度会大大加快,为什么会这样呢?

最佳答案

看一下以下语句:

downloadedPerc += (count/getModPackSize())*100;


count的类型应为double,或者您应将分子转换为double。

例如:downloadedPerc += (count*1.0/getModPackSize())*100;可以正常工作。

07-27 17:01