如何确定Ada 95中Float的模数

时间:2010-03-19 01:48:15

标签: math floating-point ada

我需要确定一个时间周期剩余的数量。要在C中执行此操作,我将使用fmod。但是在ada我找不到类似功能的参考。它需要准确,并且需要返回浮动以获得精确度。

那么如何确定Ada 95中Float的模数?

 elapsed := time_taken mod 10.348;
 left := 10.348 - elapsed;
 delay Duration(left);

3 个答案:

答案 0 :(得分:4)

使用浮点'Remainder属性。

Elapsed, Time_Taken : Float;

...

Elapsed := Float'Remainder(Time_Taken, 10.348);

答案 1 :(得分:2)

不是你实际问题的答案;但是,要实现该段代码的意图,请考虑使用delay until

   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;

答案 2 :(得分:1)

我不知道Ada,但假设它有Floor功能,您可以使用elapsed := time_taken - Floor(time_taken / 10.348) * 10.348)

编辑:我刚刚发现了this关于为此目的使用剩余属性的讨论。