JSF f:convertNumber汇总货币

时间:2011-02-19 00:01:01

标签: jsf double rounding money-format

是否可以使用f:convertNumber进行舍入?我检查了the api here,但没有提到有关舍入的任何内容。如果没有,那么在将其翻倍的同时将双倍转换为$值的最佳选择是什么?

<f:convertNumber maxFractionDigits="2" groupingUsed="true" currencySymbol="$" maxIntegerDigits="7" type="currency" />

Ex:$ 1.104999应该变成$ 1.11

3 个答案:

答案 0 :(得分:1)

这适用于我的具体情况。但它会有其他任何边缘情况会破裂吗?

首先,在我的java类中对它进行舍入:

private double roundCost(double cost) {
    return (Math.ceil(cost*100))/100;
}

然后将其传递给我的f:convertNumber。

我愿意接受其他建议。

答案 1 :(得分:1)

在处理货币金额等确切数字时,你真的不应该在Java中使用原始double;相反,使用java.lang.BigDecimal或一些自定义Money类型;有关原因的解释,请参阅this SO question

BigDecimal支持多种舍入模式;你正在寻找的那个可能是java.math.RoundingMode.UP

关于如何将它与f:convertNumber结合起来的问题,我现在正在研究这个问题。

答案 2 :(得分:0)

在使用默认舍入机制之前,可以添加0,005(在您的情况下)。