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 向上取整货币的主要内容,如果未能解决你的问题,请参考以下文章

JSF 2 convertNumber permille

向上取整_向下取整_四舍五入

python 向下取整,向上取整,四舍五入

向上取整与向下取整

iOS 中常用的几种函数 (向上,向下,四舍五入)取整

js只保留整数,向上取整,四舍五入,向下取整等函数