Вот что я делаю:
Код: Выделить всё
std::size_t const k = static_cast(std::floor(t / dt));
for (std::size_t i = 0; i < k; ++i)
foo(i * dt, dt);
float const s = k * dt,
h = t - s;
if (h > 0)
foo(s, h);
Теперь я заметил, что из-за числовой неточности h > 0, даже если t делится на dt, и в этом случае выполняется foo с крошечным h во втором аргументе. Это то, чего мне бы очень хотелось избежать. Есть ли возможность написать код в более стабильной числовой форме, чтобы он не выполнял ветвь h > 0, когда t делится на dt?
Подробнее здесь: https://stackoverflow.com/questions/781 ... rt-dt-dt-t
Мобильная версия