2

f:convertNumberを使用して切り上げることは可能ですか?ここでAPIを確認しましたが、丸めについては何も言及されていませんでした。そうでない場合、切り上げ中にdoubleを$値に変換する次善の策は何ですか?

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

例:$1.104999は$1.11になるはずです

4

3 に答える 3

1

double金額などの正確な数値を扱う場合、Javaでプリミティブを使用するべきではありません。むしろ、java.lang.BigDecimalカスタムの Money 型を使用します。理由については、この SO questionを参照してください。

BigDecimalいくつかの丸めモードをサポートしています。あなたが探しているのはおそらくjava.math.RoundingMode.UP.

これを af:convertNumber とどのように組み合わせるかという質問については、現在自分で調べています。

于 2012-07-19T21:03:46.813 に答える
1

これは私の特定のケースで機能します。しかし、壊れる他のエッジケースはありますか?

まず、Java クラスで丸めます。

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

次に、それを f:convertNumber に渡します。

私は他の提案を受け入れます。

于 2011-02-19T01:05:31.913 に答える
0

デフォルトの丸めメカニズムを使用する前に、0,005(あなたの場合)を追加できます。

于 2015-03-31T10:15:52.303 に答える