Я не знаю, является ли это очевидной ошибкой, но при запуске Python script для изменения параметров моделирования я понял, что результаты с delta = 0.29 и delta = 0.58 отсутствовали. При исследовании я заметил, что следующий код Python:
for i_delta in range(0, 101, 1):
delta = float(i_delta) / 100
(...)
filename = 'foo' + str(int(delta * 100)) + '.dat'
генерируются идентичные файлы для delta = 0,28 и 0,29, то же самое с .57 и .58, причина в том, что python возвращает float (29)/100 как 0.28999999999999998. Но это не систематическая ошибка, а не то, что происходит с каждым целым числом. Поэтому я создал следующий Python script:
import sys
n = int(sys.argv[1])
for i in range(0, n + 1):
a = int(100 * (float(i) / 100))
if i != a: print i, a
И я не вижу ни одного шаблона в числах, для которых эта ошибка округления происходит. Почему это происходит с этими конкретными номерами?