fn get_download_ranges(file_size: u64, threads: u8) -> Vec<(u64, u64)> { let mut ranges = Vec::new(); for i in 0..threads as u64 { let start = i * (file_size / threads as u64); let end = (i + 1) * (file_size / threads as u64) - 1; ranges.push((start, end)); } return ranges; get_download_ranges(37870328, 3) Код для MRE
вам тут надо целочисленно делить и так же учитьівать остаток %
Переделал под флоаты. Теперь считает правильно
Есть такой тип https://doc.rust-lang.org/std/ops/struct.Range.html
а если fileSize / threads не будет цельім числом?
Мне главное чтобы разделение покрыло весь файл
ага, тогда когда вьі работаете с размерами файла нельзя использовать флоатьі
В конечном счёте они приводятся к целым числам
только вот дробная часть в конце концов набежит в пару байт
Ну дробная часть участвует в расчётах, но обрезается после них
Гарантий что что-то не сломается нет)
Обсуждают сегодня