Для целых чисел:
def make_urange(urange,uranges):
i = minimum
while i <= maximum:
l = []
l.append(i)
i = i + urange
if i < maximum:
l.append(i-1)
else:
i = maximum + 1
l.append(maximum)
uranges.append(l)
Для вещественных чисел:
def make_urange(urange,uranges):
i = minimum
while i <= maximum:
l = []
l.append(round(i,10))
i = i + urange
if i < maximum:
l.append(round((i-0.0000000001),10))
else:
i = maximum + 1
l.append(round(maximum,10))
uranges.append(l)
В случае с вещественными числами нельзя прибавлять и вычитать единицу, т.к. невозможно определить следующее и предыдущее значение. Все зависит от точности, которая может быть сколь угодно большой.
В данном случае предстоящее перед i значение принимается меньше, чем i на 10 знаков после точки. Однако было бы достаточно делать его меньше в зависимости от точности обрабатываемых данных (определять количество знаков после точки). Дело осложняется тем, что данные могут содержать значения разной точности. Пришлось бы писать код, определяющий наиболее точное число в переданной последовательности.
Также не совсем ясна особенность обработки вещественных чисел компьютером, и почему используется округление. Но протестировано и работает: все значения учитываются.