JSF f: convertNumber округлить вверх по валюте - PullRequest
2 голосов
/ 19 февраля 2011

возможно ли использовать f: convertNumber для округления?Я проверил API здесь , и ничего не говорилось о округлении.Если нет, как лучше всего преобразовать двойное значение в $ при округлении?

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

Пример: 1,104999 $ должно стать 1,11

Ответы [ 3 ]

1 голос
/ 20 июля 2012

Вы действительно не должны использовать примитив double в Java при работе с точными числами, такими как денежные суммы;скорее используйте java.lang.BigDecimal или какой-либо другой тип Money;объяснение причины см. в этом вопросе SO .

BigDecimal поддерживает несколько режимов округления;тот, который вы ищете, вероятно, java.math.RoundingMode.UP.

Что касается вопроса о том, как совместить это с af: convertNumber, я сам сейчас в этом разбираюсь.

1 голос
/ 19 февраля 2011

Это работает для моего конкретного случая. Но будут ли у него другие крайние случаи, которые сломаются?

Сначала, округли это в моем классе Java:

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

А потом это до моего f: convertNumber.

Я открыт для других предложений.

0 голосов
/ 31 марта 2015

Можно добавить 0,005 (в вашем случае) перед использованием механизма округления по умолчанию.

...