Я хотел бы посоветовать, как оптимизировать следующий цикл while:
double minor_interval = 0.1;
double major_interval = 1.0;
double start = 0.0;
double finish = 10.0;
printf("Start\r\n");
while (start < finish)
{
printf("Minor interval: %.20f\r\n", start);
double m = fmod(start, major_interval);
printf("m: %.20f\r\n", m);
if (m == 0)
printf("At major interval: %.20f\r\n", start);
start += minor_interval;
}
printf("Finished\r\n");
По сути, я увеличиваю счетчик в цикле на второстепенный интервал и хотел бы знать каждый раз в цикле, нахожусь ли я на главном интервале. Представьте, что вы рисуете линейку с интервалом в миллиметры, и каждый раз, когда я достигаю большого интервала, я хочу нарисовать сантиметр. Учитывая неточности в арифметике с плавающей запятой, как я могу изменить вышеуказанный цикл для реализации необходимых мне функций? Я пробовал разные методы сравнения результатов модуля, используя допуск без удачи. Обратите внимание, что второстепенный и мажорный интервалы могут быть любыми значениями, т.е. минор = 0,4 и мажор = 1,6 (для рисования приращений на четверть мили).
Заранее спасибо.