Как определить модуль Float в Ada 95
-
21-09-2019 - |
Вопрос
Мне нужно определить количество, оставшееся от временного цикла.Чтобы сделать это на C, я бы использовал fmod.Но в ada я не могу найти ссылки на подобную функцию.Он должен быть точным, и он должен возвращать значение float для точности.
Итак, как мне определить модуль Float в Ada 95?
elapsed := time_taken mod 10.348;
left := 10.348 - elapsed;
delay Duration(left);
Решение
Используйте значение с плавающей запятой 'Остаток атрибут.
Elapsed, Time_Taken : Float;
...
Elapsed := Float'Remainder(Time_Taken, 10.348);
Другие советы
Это не ответ на ваш настоящий вопрос;но, чтобы достичь цели этого фрагмента кода, рассмотрите возможность использования откладывать до тех пор, пока.
Next_Time : Ada.Calendar.Time;
use type Ada.Calendar.Time;
Period : constant Duration := 10.348;
begin
...
Next_Time := Ada.Calendar.Clock;
loop
-- do stuff
Next_Time := Next_Time + Period;
delay until Next_Time;
end loop;
Я не знаю Аду, но предполагая, что у нее есть Floor
функция, которую вы могли бы использовать elapsed := time_taken - Floor(time_taken / 10.348) * 10.348)
.
Редактировать:Я также только что нашел это обсуждение использования атрибута Rest для этой цели.