实数的格式规范
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)
我想将一些实数打印到日志文件中。为了使它们易于阅读,我希望它们都具有相同的宽度。我知道这些数字的范围是 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)