我有一个文件,希望将其拆分为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

最佳答案

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()”它。

10-06 10:33