Вопрос

Мне нужно определить количество, оставшееся от временного цикла.Чтобы сделать это на 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 для этой цели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top