Freemarker将字符串转换为不舍入的数字并获得绝对值



我是Freemarker模板的新手。我想把一个字符串转换成一个数字,不需要四舍五入,然后得到它的绝对值。

的例子:

<#if a.value?is_string>
<#if a.value?number &lt; 0>
"aValue": "${a.value?number?abs}"
<#else>
"aValue": "${a.value}"
</#if>
</#if>

当我执行上述操作时,当将字符串转换为数字时,Freemarker首先将值四舍五入并获得该值的绝对值。

如果我传递-1.234567作为a值,那么它给出1.235。预期的结果将是1.234567(这应该在第一个if块中)

如果有人知道答案,请帮助。谢谢。

这不是因为?number。它不做四舍五入。在将数字转换回字符串时发生丢失。这将根据number_format设置进行本地化格式化,该设置必须类似于"0.###"

如果您输出的数字将被程序再次解析,那么始终使用?c格式化,如${a.value?abs?c}?c总是使用点作为小数分隔符,并且从不使用分组分隔符(如3,000,000),并且在点后面最多显示16位数字。

最新更新