• ベストアンサー

JAVAの四捨五入

お世話になっています。 今、JAVAでBigDecimalを使って、比率を求めようとしています。 小数第2位を四捨五入して、小数第1位まで求めたいのですが、 そういうことはできますでしょうか? できるならその方法を教えて下さい。 もしできないなら、何か打開策がありましたら、教えて下さい。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

> setScaleメソッドのscaleは、小数第X位の”X”を意味するのですか? はい、そうです。 なお、scaleにマイナスの値を与えるとエラーになります。 > また、例の1行目、2行目を纏めるとdivideを使ったのと同じなのですか? 例では割り算を行っていないので、1行目、2行目を纏めるとdivideと同じになるというわけではありませんが、divideをつかって四捨五入することもできます。 divideは割り算を行った後にその結果を四捨五入します。setScaleはただ四捨五入するだけです。 割り算をする必要がないのであれば、setScaleのほうが早いです。 divideの例) BigDecimal bd1 = new BigDecimal("2.5"); BigDecimal bd2 = new BigDecimal("3.6"); BigDecimal bd3 = bd1.divide(bd2, 5, BigDecimal.ROUND_HALF_UP); System.out.println(bd1); System.out.println(bd2); System.out.println(bd3); // 出力結果は "2.5"、"3.6"、"0.69444"

ichigo_ichie
質問者

お礼

補足が説明不足ですみません。 ちなみに、割り算をして、比率を算出したいので、 divideを使おうと思います。 詳細にカキコしてくださって、ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

ただ単に setScale メソッドを使うだけで済むことだと思いますが……。 例) BigDecimal bd1 = new BigDecimal("9.87654321"); BigDecimal bd2 = bd1.setScale(1, BigDecimal.ROUND_HALF_UP); System.out.println(bd2); // 出力結果は "9.9"

ichigo_ichie
質問者

補足

setScaleメソッドのscaleは、小数第X位の”X”を意味するのですか? また、例の1行目、2行目を纏めるとdivideを使ったのと同じなのですか? BigDecimal divide(BigDecimal val, int scale, int roundingMode)

すると、全ての回答が全文表示されます。

関連するQ&A