Freemarker:在BigDecimal中保留尾随零

问题描述 投票:0回答:1

我想将带有任意数量的traling零的BigDecimal值复制到Freemarker模板中(例如,如果在Java中调用value.toString()导致123.0000,我想看到123.0000插入到模板中)。

然而,使用内置插件(如?string)或只是${valueWithZeroes}总是似乎剥离尾随零。使用?string[...]是不可能的,因为尾随零的确切数量是未知的。 AFAIK,有一种方法可以使用BigDecimal从Freemarker模板调用toString自己的?api方法 - 但是,文档似乎不鼓励这样做。所以我想知道是否有任何其他方法可以使用Freemarker本身实现这一点,而不会回到Java方法。

java freemarker
1个回答
1
投票

我相信java.text.DecimalFormat无法做到这一点,因此FreeMarker无法开箱即用。但是,您可以定义自己的CustomNumberFormatFactory,并在Java中尽一切可能。请参见此处的示例:https://freemarker.apache.org/docs/pgui_config_custom_formats.html。所以你在那里做一些类似HexTemplateNumberFormatFactory的东西,你也可以将自定义数字格式设置为默认数字格式(通过在示例中将number_format设置为"@hex")。

请注意,如果您只是按原样使用BigDecimal.toString,格式化将不会考虑Locale。所以你的小数分隔符在某些语言中会出错。

© www.soinside.com 2019 - 2024. All rights reserved.