Domanda

ho bisogno per determinare la quantità di sinistra di un ciclo di tempo. Per fare questo in C userei fmod. Ma in ada riesco a trovare alcun riferimento a una funzione simile. Ha bisogno di essere preciso e ha bisogno di tornare un galleggiante per la precisione.

Quindi, come faccio a determinare il modulo di un galleggiante in Ada 95?

 elapsed := time_taken mod 10.348;
 left := 10.348 - elapsed;
 delay Duration(left);
È stato utile?

Soluzione

Utilizzare il punto 'Resto attributo.

Elapsed, Time_Taken : Float;

...

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

Altri suggerimenti

Non è una risposta alla tua domanda effettiva; ma, per raggiungere l'intenzione di quel pezzo di codice, è possibile utilizzare ritardo fino .

   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;

Non so Ada, ma ammesso che ha una funzione Floor si potrebbe usare elapsed := time_taken - Floor(time_taken / 10.348) * 10.348).

Edit: ho anche appena trovato questo discussione sulla utilizzando l'attributo resto per questo scopo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top