Tenho um número real delay
que gostaria de converter para o primeiro múltiplo de 10. Por exemplo, se atraso = 0,0024, quero que a saída seja 240.
No trecho de código a seguir, delay
= 1.52e-6. Após while
a execução do loop, eu esperava delay
ser 1520. No entanto, estou vendo que delay
= 1,52e17 após while
o loop. Verifiquei a forma de onda e parece que o valor de delay
era 1,5200000000000001e-6 para começar. Por que é tão? Estou fazendo algo errado?
Aqui está o código:
real delay = 1.52e-6;
function real mod (real a, real b);
mod = a - b*$floor(a/b);
endfunction
initial begin
while (mod(delay, 10) != 0) delay = delay*10;
end