- ベストアンサー
割り算
ダブル型で316.95/3.0をすると、105.65という答えがほしいのですが、結果が105.6499999・・・となってしまいます。 きちんと計算できる方法を教えていただけますでしょうか。 おねがいします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1 takataka111です。 サンプルを作成してみました。 参考になさってください。 import java.math.BigDecimal; class DecimalTest { public static void main(String args[]) { // 加算結果も BigDecimal で保持 // 桁数を小数点以下2桁に設定: "0.00" BigDecimal sum = new BigDecimal("0.00"); // cents を BigDecimal 型に BigDecimal cents = new BigDecimal(316.95); // 個数を BigDecimal 型に BigDecimal count = new BigDecimal(3.0); sum = cents.divide(count,BigDecimal.ROUND_UP).setScale(2, BigDecimal.ROUND_HALF_UP); // 合計値を表示 System.out.println("sum = " + sum); } }
その他の回答 (2)
- sha-girl
- ベストアンサー率52% (430/816)
#takataka111さんの参考ページにもでていますが doubleやfloat等、浮動小数点では誤差が発生します。 doubleの場合、具体的には有効数字15桁です。 他の方法として DecimalFormat等で表示する数値を小数点以下2桁にすれば 希望の結果になるかとおもいます。 http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/text/DecimalFormat.html 試していませんが double dval = 316.95/3.0; DecimalFormat df = new DecimalFormat("#0.0"); String strr = df.format(dval);
お礼
すいません。どうもありがとうございました。
- takataka111
- ベストアンサー率46% (23/50)
おつかれさまです。 BigDecimalクラスを私用することをおすすめします。 詳細は参考URLをご覧になってみてください。
お礼
遅くなりましてすいません。 本当にどうもありがとうございました。