in reply to Re^2: Split range 0 to M into N non-overlapping (roughly equal) ranges.

in thread Split range 0 to M into N non-overlapping (roughly equal) ranges.

Yeah, they are rounding errors. Rearranging the calculation fixes it (at least, on my platform):

The most important is the finalsub ranges_javafan { my ($M, $N) = @_; return [ map {[int($_/$N*($M+1)) , int((($_+1)/$N)*($M+1))-1] } 0..$N - 1]; }

`($_+1)/$N*($M+1)`- that should return`$M+1`for`$_ == $N-1`. The impact of other rounding errors is that a range is 1 shorter than expected (but making the next one one larger - it shouldn't skip numbers).
In Section
Seekers of Perl Wisdom