Como determinar o módulo de um flutuador em Ada 95
-
21-09-2019 - |
Pergunta
Preciso determinar a quantidade restante de um ciclo de tempo. Para fazer isso no CI, usaria o FMOD. Mas na ADA não encontro referência a uma função semelhante. Precisa ser preciso e precisa devolver um flutuador para precisão.
Então, como faço para determinar o módulo de um flutuador na Ada 95?
elapsed := time_taken mod 10.348;
left := 10.348 - elapsed;
delay Duration(left);
Solução
Use o ponto flutuante 'Restante atributo.
Elapsed, Time_Taken : Float;
...
Elapsed := Float'Remainder(Time_Taken, 10.348);
Outras dicas
Não é uma resposta para sua pergunta real; Mas, para alcançar a intenção dessa parte do código, considere usar Atraso até.
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;
Eu não conheço Ada, mas assumindo que ele tem um Floor
função que você poderia usar elapsed := time_taken - Floor(time_taken / 10.348) * 10.348)
.
Edit: eu também acabei de encontrar isto discussão sobre o uso do atributo restante para esse fim.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow