0

我有一个文件,我想分成 100 份。
文件大小为 257019 字节。
在下面运行我的拆分器代码时,我得到 99 个大小为 2545 字节的部分,最后 100 个部分是 5064 字节。

我需要帮助来弄清楚如何使前 99 个部分具有相同的大小,而最后 100 个部分的剩余字节数等于或低于 2545。

int partSize;
for(partSize=1 ;partSize< 257019; partSize++){
   if((int) Math.ceil(257019 / partSize) == 100){
     break;
   }
}

int totalparts = (int) Math.ceil(257019 / partSize); // =100
4

2 回答 2

4
int fileSize = 257019;
int partSize = Math.ceil( ((double)fileSize) / 100);
int lastPacket = 257019 - (99 * partSize);

在这种情况下:

int partSize = 2571;
int lastPacket = 257019 - 254529 = 2490 < 2571

您的代码的原始问题:

(int) Math.ceil(257019 / partSize) == 100

257019 / partSize在评估之前Math.ceil评估。如果将整数除以整数,则结果自动为整数。整数的默认行为是忽略除小数本身之外的所有内容,因此它会自动“ Math.floor()”它。

于 2013-07-30T18:29:13.117 回答
2
int partSize = totalSize / 100;
if ((totalSize % 100) != 0) {
    partSize++;
}
于 2013-07-30T18:26:23.443 回答