【问题标题】:How to total currencies in FreeMarker?如何在 FreeMarker 中总计货币?
【发布时间】:2017-08-04 05:12:51
【问题描述】:

如何在 FreeMarker 中将数据制成表格,同时保持精度和not losing cents due to double of float reprensations

<#assign totalSalaries = 0>

<#list employees as employee>
    <#assign totalSalaries = totalSalaries + emplpoyee.salary>
</#list>

${totalSalaries?string.currency}

就个人而言,我更喜欢使用多头并将所有内容都以美分表示,但我找不到将其转换为货币价值的简单解决方案。无论哪种方式,如果我使用 longBigDecimal(很容易将 long 与 cents 转换为 BigDecimal),我如何保证打印出来的总工资不会因为 doubles 或 floats 的精度错误而损失任何美分?换句话说,FreeMarker 是如何决定将 total 定义为什么类型的变量?

【问题讨论】:

    标签: java freemarker


    【解决方案1】:

    FreeMarker 使用 ArithmeticEngine 进行计算(以及其中所需的数字类型转换),这是一个配置设置。该设置的默认值为BigDecimalEngine,它在对它们进行任何操作之前将所有内容转换为BigDecimal,并将结果也保留为BigDecimal。所以至少在默认情况下你不会丢失任何数字。

    【讨论】:

    • 你知道这是在哪里记录的吗?我找了一会儿,找不到任何东西,所以很高兴看到我错过了它;)
    • 如果您通过 API 中的配置设置,您可能会碰到它......当然它需要更多提及。我会调查的。
    • 谢谢,我找到了。是的,如果可能的话,我建议在网站上的某个地方添加它,而不仅仅是 API。无论如何,再次感谢您,非常感谢。顺便说一句,我发现 FreeMarker 是一个非常了不起的模板引擎!很棒的工作!
    猜你喜欢
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多