Use a Rational instead of a Float in PeriodGroup#split_into

This avoids any loss of precision due to (premature) rounding.