JSF f:convertNumber 货币向上舍入

发布于 2024-10-17 21:19:09 字数 429 浏览 1 评论 0原文

是否可以使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦里兽 2024-10-24 21:19:09

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

首先,在我的 java 类中将其舍入:

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

然后将其传递到我的 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:

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

Then past that to my f:convertNumber.

I'm open to other suggestions.

帅哥哥的热头脑 2024-10-24 21:19:09

在处理诸如货币金额之类的精确数字时,您确实不应该在 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, use java.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 probably java.math.RoundingMode.UP.

As for the question on how to combine this with a f:convertNumber, I'm looking into that myself currently.

弥枳 2024-10-24 21:19:09

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

One can add 0,005 (in your case) before using the default-rounding-mechanism.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文