我有一个实数delay
,我想将其转换为 10 的第一个倍数。例如,如果延迟 = 0.0024,我希望输出为 240。
在以下代码片段中,delay
= 1.52e-6。循环执行后while
,我预计为 1520。但是,循环后delay
我看到= 1.52e17 。我检查了波形,看起来 的值最初是 1.5200000000000001e-6。为什么会这样呢?难道我做错了什么?delay
while
delay
这是代码:
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