BigDecimalのsetScale(int newScale, RoundingMode roundingMode)でいい具合にやりたいと試行錯誤しましたが、0だけ切り捨てるような丸めはありません。
いや、RoundingMode.UNNECESSARY渡せばいいんですが、ビューでやったりすると0がついてない場合にArithmeticExceptionで死んでしまいます。
例のごとく検索しましたが、すっきりする解決法が見つかりません。
以下なら期待する結果を得ることはできそうです。1
0を表示させたくない。 - Java Solution - @IT
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7653&forum=12
次のようなトリミングメソッドを書きます。
例外処理に依存したコードなんですが、
JDC Tech Tipsで紹介されてるのでフォーマルなんでしょう。
とのことで、以下のコードが紹介されています。
static BigDecimal trim(BigDecimal n) {
try {
while (true) {
n = n.setScale(n.scale()-1);
}
} catch (ArithmeticException e) {
// no more trailing zeroes so exit.
}
return n;
}
そんな、ばかな……。
こんなの頻発するんだから何かありそうなものですけど。
-
TechTipsがデッドリンクになってますが、BigDecimalで表される数値の書式設定が同じ内容と思われます。 ↩