JSF f:convertNumber 向上取整货币
Posted
技术标签:
【中文标题】JSF f:convertNumber 向上取整货币【英文标题】:JSF f:convertNumber round up currency 【发布时间】:2011-02-19 00:01:01 【问题描述】:是否可以使用 f:convertNumber 进行四舍五入?我检查了the api here,它没有提到任何关于四舍五入的内容。如果不是,那么在四舍五入时将双精度值转换为 $ 值的下一个最佳方法是什么?
<f:convertNumber maxFractionDigits="2" groupingUsed="true" currencySymbol="$" maxIntegerDigits="7" type="currency" />
例如:$1.104999 应该变成 $1.11
【问题讨论】:
【参考方案1】:这适用于我的具体情况。但它会不会有任何其他边缘情况会被打破?
首先,在我的 java 类中对其进行舍入:
private double roundCost(double cost)
return (Math.ceil(cost*100))/100;
然后将其传递给我的 f:convertNumber。
我愿意接受其他建议。
【讨论】:
【参考方案2】:你真的不应该在 Java 中使用原始的double
来处理精确的数字,比如货币金额;而是使用 java.lang.BigDecimal
或一些自定义的 Money 类型;有关原因,请参阅this SO question。
BigDecimal
支持多种舍入模式;你要找的可能是java.math.RoundingMode.UP
。
关于如何将它与 f:convertNumber 结合的问题,我目前正在研究这个问题。
【讨论】:
【参考方案3】:在使用默认舍入机制之前,可以添加 0,005(在您的情况下)。
【讨论】:
以上是关于JSF f:convertNumber 向上取整货币的主要内容,如果未能解决你的问题,请参考以下文章