Monetary APIを使用してJavaのMoney値をフォーマットしています。 MonetaryAmountFormat
を使用して値をフォーマットすると、2回以上の丸めで誤った値が返されます。例を言ってみましょう:上記の例のMonetary APIを使用してフォーマットされた2つ以上の精度丸めJava
private static final MonetaryAmountFormat MONETARY_AMOUNT_FORMAT = MonetaryFormats.getAmountFormat(Locale.getDefault());
MonetaryAmount amount = Monetary.getDefaultAmountFactory()
.setCurrency(currencyUnit).setNumber(Double.valueOf(value.toString())).create().with(rounding);
value = MONETARY_AMOUNT_FORMAT.format(amount);
出力:
Rounding = 2, amount = 12323.45, value =12,323.45 //OK
Rounding = 3, amount = 12323.45334, value =12,323.45 //Wrong, it should convert it 12323.453
フォーマットで2つ以上の丸めを達成するためにどのような方法がありますか?
あなたは、あなたのローカル設定に縛らLocale.getDefault()を使用しました。独自のカスタムフォーマットを作成してみてください。 –
ここで例を見てください:http://www.programcreek.com/java-api-examples/index.php?api=javax.money.format.MonetaryFormats。あなたは私が見ている 'パターン' –
を変更することができます。整数値としてのみ丸めます。私はパターンを適用したくありません。インプラントごとに、私は2,3などの設定から来る丸めだけを持っています。私はデフォルトのローカルパターンを使いたい。精度の変更のみが必要です。 – iMBMT