实数的格式规范

Format specifications for real numbers

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

$display("expected= %4.2f, actual= %4.2f", expected, actual)

我希望看到的是:

expected=   12.25, actual=   12.75 
expected= 4093.25, actual= 4094.75 

但是我得到的是这个:

expected= 12.25, actual= 12.75 
expected= 4093.25, actual= 4094.75 

如何强制小数点以上的宽度为4个字符? LRM 的 21.2.1.3 显示数据大小 部分在 %f 上保持沉默。

使用 %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

输出:

expected=   12.25, actual=   12.75
expected= 4093.25, actual= 4094.75

也可以在逗号后指定我们希望看到的浮点变量的数量:

    `uvm_info(get_type_name(), $sformatf("tslot_start=%.3f, tslot_start_tolerance=%.2f", 
tslot_start, tslot_start_tolerance), UVM_LOW)