Freemarker 将 int 值显示为 double 值(例如将 0 打印为 0.00)

Freemarker displays int value as double value(e.g. prints 0 as 0.00)

我正在尝试编写一个包含 table 信息的 freemarker 模板文件。

我在模板中写了“${noRows}”用于 table 行计数。
noRows 是一个 int 值:

int noOfRows = myTable.getNumRows();
data.put("noRows", noOfRows);

noOfRows 始终是一个整数值,但在输出文件中它显示为双精度值并附加了“.00”。

如何只显示整数值。

如果该值确实是一个整数,您需要做的就是

${noOfRows?string}

您也可以使用Java十进制数格式语法:

${noOfRow?string["0"]}

参考:http://freemarker.org/docs/ref_builtins_number.html#ref_builtin_string_for_number

显然,您的 number_format 设置设为 0.00 或类似的设置。 (FreeMarker 在格式化数字时不关心 Integer VS Double。它只有一个数字类型,并根据该设置格式化所有数字。)在配置 FreeMarker 的任何地方检查它。不得已,您也可以在模板中设置此设置,如 <#setting number_format="0.##">。最后一点,正如 "sev" 所说,您可以在每个地方单独指定格式。