Дело не в «пределе», а в числовой записи c:
>>> a0 = 0.000001
>>> print(a0)
1e-06
>>> a0 = 0.0001
>>> print(a0)
0.0001
>>>
Считанная из файла строка «0,000001» не будет заменена, поскольку метод replace()
искать "1e-06". То же не происходит с "0,0001".
Формат a0
как float , вместо:
...
data1 = data1.replace(str("%f" % a0), str(an), 1)
...