dポイントプレゼントキャンペーン実施中!

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

A 回答 (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"
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/10/14 21:45

ただ単に setScale メソッドを使うだけで済むことだと思いますが……。



例)
BigDecimal bd1 = new BigDecimal("9.87654321");
BigDecimal bd2 = bd1.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println(bd2);
// 出力結果は "9.9"

この回答への補足

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

BigDecimal divide(BigDecimal val, int scale, int roundingMode)

補足日時:2003/10/14 17:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!