实数的格式规范

ngu*_*rie 4 verilog system-verilog

我想将一些实数打印到日志文件中。为了使它们易于阅读,我希望它们都具有相同的宽度。我知道这些数字的范围从 0 到 4095.75,所以我试过这个:

$display("expected= %4.2f, actual= %4.2f", expected, actual)
Run Code Online (Sandbox Code Playgroud)

我希望看到的是这样的:

expected=   12.25, actual=   12.75 
expected= 4093.25, actual= 4094.75 
Run Code Online (Sandbox Code Playgroud)

但我得到的是这样的:

expected= 12.25, actual= 12.75 
expected= 4093.25, actual= 4094.75 
Run Code Online (Sandbox Code Playgroud)

如何强制小数点上方值的宽度为 4 个字符?第21.2.1.3节LRM显示数据大小在 %f 上是静默的。

too*_*lic 5

%7在我尝试过的 2 个模拟器中使用适用于您的值:

module tb;

real expected, actual;

initial begin
    expected = 12.25; actual=   12.75;
    $display("expected= %7.2f, actual= %7.2f", expected, actual);
    expected= 4093.25; actual= 4094.75;
    $display("expected= %7.2f, actual= %7.2f", expected, actual);
    #5 $finish;
end

endmodule
Run Code Online (Sandbox Code Playgroud)

输出:

expected=   12.25, actual=   12.75
expected= 4093.25, actual= 4094.75
Run Code Online (Sandbox Code Playgroud)

  • 愚蠢的我假设第一个数字指的是小数点之前发生的事情而不是字段的总长度。 (2认同)