我有一个文件,我想分成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
答案 0 :(得分: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()
”。
答案 1 :(得分:1)
int partSize = totalSize / 100;
if ((totalSize % 100) != 0) {
partSize++;
}