Java 使用长字符时如何使用Freemarker显示货币

Java 使用长字符时如何使用Freemarker显示货币,java,freemarker,Java,Freemarker,假设我有: class Person { private long salary; } 其中5345273等于$53452.73(换句话说,最后两位数字为美分) 有没有办法直接引用${Person.salary}以便显示正确的金额 我确实看到有,但如果你使用多头,似乎没有。我确实看到有可能,但这是唯一的方法吗?如果是的话,是否有人已经创建了一个,因为我无法想象我是唯一一个使用多头来管理货币金额的人。这是正确的解决方案吗?应该可以转换长到表达式中的双精度。类似这样:${(Person.s

假设我有:

class Person
{
    private long salary;
}
其中5345273等于$53452.73(换句话说,最后两位数字为美分)

有没有办法直接引用
${Person.salary}
以便显示正确的金额


我确实看到有,但如果你使用多头,似乎没有。我确实看到有可能,但这是唯一的方法吗?如果是的话,是否有人已经创建了一个,因为我无法想象我是唯一一个使用多头来管理货币金额的人。这是正确的解决方案吗?

应该可以转换长到表达式中的双精度。类似这样:
${(Person.salary/100)?string.currency}

我试图避免这样做,因为这确实是一个解决办法,如果非it人员必须实现该模板,这将非常奇怪……在我看来,奇怪之处在于以美分为单位存储工资,您可以在模型中添加
float getSalaryInDollars()
,并按照@henrik建议的
来表达您的货币{person.salaryInDollars?string.currency}
这个问题有点误导人,因为
并不是真正相关的。相关的是你用美分存储金额,但想用美元显示。所以这是单位转换,而不仅仅是格式。无论如何,如果你不能更改数据模型,我认为使用自定义格式是你能得到的最干净的解决方案。@ddekany我担心的是,如果我使用双精度,我会因为转换而遇到精度问题。换句话说,我可能会在这里或那里损失不可接受的零头,这对于会计数据是不可接受的……为了钱,你应该使用
BigDecimal
-s。双精度/浮点更适合于物理模拟和游戏等。