JSF f:convertNumber 货币向上舍入
是否可以使用 f:convertNumber 进行向上舍入?我检查了 api这里并且没有提到任何有关舍入的内容。如果不是,那么将 double 值转换为 $ 值同时向上舍入的下一个最佳方法是什么?
<f:convertNumber maxFractionDigits="2" groupingUsed="true" currencySymbol="$" maxIntegerDigits="7" type="currency" />
例如:$1.104999 应变为 $1.11
is it possible to use f:convertNumber to round up? I checked the api here and it didn't mention anything about rounding. If not, what is the next best thing to convert a double to a $ value while rounding it up?
<f:convertNumber maxFractionDigits="2" groupingUsed="true" currencySymbol="$" maxIntegerDigits="7" type="currency" />
Ex: $1.104999 should become $1.11
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这适用于我的具体情况。但它还会有其他会破坏的边缘情况吗?
首先,在我的 java 类中将其舍入:
然后将其传递到我的 f:convertNumber。
我愿意接受其他建议。
This works for my specific case. But will it have any other edge cases that will break?
First, round it in my java class:
Then past that to my f:convertNumber.
I'm open to other suggestions.
在处理诸如货币金额之类的精确数字时,您确实不应该在 Java 中使用原始的
double
;相反,使用 java.lang.BigDecimal 或某些自定义 Money 类型;有关原因的解释,请参阅这个问题。BigDecimal
支持多种舍入模式;您正在寻找的可能是java.math.RoundingMode.UP
。至于如何将其与 af:convertNumber 结合起来的问题,我目前正在研究。
You really shouldn't be using a primitive
double
in Java when dealing with exact numbers such as monetary amounts; rather, usejava.lang.BigDecimal
or some custom Money type; for an explanation why, see this SO question.BigDecimal
has support for several rounding modes; the one you are looking for is probablyjava.math.RoundingMode.UP
.As for the question on how to combine this with a f:convertNumber, I'm looking into that myself currently.
在使用默认舍入机制之前,可以添加 0,005(根据您的情况)。
One can add 0,005 (in your case) before using the default-rounding-mechanism.