如何确定 Ada 95 中 Float 的模数

发布于 2024-08-25 07:43:48 字数 232 浏览 16 评论 0原文

我需要确定时间周期的剩余量。要在 CI 中做到这一点,需要使用 fmod。但在 ada 中我找不到类似函数的参考。它需要准确,并且需要返回浮点数以确保精度。

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

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

I need to determine the amount left of a time cycle. To do that in C I would use fmod. But in ada I can find no reference to a similar function. It needs to be accurate and it needs to return a float for precision.

So how do I determine the modulus of a Float in Ada 95?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

逆蝶 2024-09-01 07:43:48

使用浮点 'Remainder 属性。

Elapsed, Time_Taken : Float;

...

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

Use the floating point 'Remainder attribute.

Elapsed, Time_Taken : Float;

...

Elapsed := Float'Remainder(Time_Taken, 10.348);
朦胧时间 2024-09-01 07:43:48

不是对您实际问题的答案;但是,要实现该代码段的目的,请考虑使用

   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;

Not an answer to your actual question; but, to achieve the intention of that piece of code, consider using 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;
柠檬色的秋千 2024-09-01 07:43:48

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

编辑:我还刚刚发现这个关于使用剩余部分的讨论用于此目的的属性。

I don't know Ada, but assuming it has a Floor function you could use elapsed := time_taken - Floor(time_taken / 10.348) * 10.348).

Edit: I also just found this discussion on using the Remainder attribute for this purpose.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文