我想将带有任意数量的traling零的BigDecimal
值复制到Freemarker模板中(例如,如果在Java中调用value.toString()
导致123.0000
,我想看到123.0000
插入到模板中)。
然而,使用内置插件(如?string
)或只是${valueWithZeroes}
总是似乎剥离尾随零。使用?string[...]
是不可能的,因为尾随零的确切数量是未知的。 AFAIK,有一种方法可以使用BigDecimal
从Freemarker模板调用toString
自己的?api
方法 - 但是,文档似乎不鼓励这样做。所以我想知道是否有任何其他方法可以使用Freemarker本身实现这一点,而不会回到Java方法。
我相信java.text.DecimalFormat
无法做到这一点,因此FreeMarker无法开箱即用。但是,您可以定义自己的CustomNumberFormatFactory
,并在Java中尽一切可能。请参见此处的示例:https://freemarker.apache.org/docs/pgui_config_custom_formats.html。所以你在那里做一些类似HexTemplateNumberFormatFactory
的东西,你也可以将自定义数字格式设置为默认数字格式(通过在示例中将number_format
设置为"@hex"
)。
请注意,如果您只是按原样使用BigDecimal.toString
,格式化将不会考虑Locale
。所以你的小数分隔符在某些语言中会出错。