• ベストアンサー

割り算

ダブル型で316.95/3.0をすると、105.65という答えがほしいのですが、結果が105.6499999・・・となってしまいます。 きちんと計算できる方法を教えていただけますでしょうか。 おねがいします。

  • Java
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
回答No.2

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); } }

shibahashi
質問者

お礼

遅くなりましてすいません。 本当にどうもありがとうございました。

その他の回答 (2)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

#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);

shibahashi
質問者

お礼

すいません。どうもありがとうございました。

回答No.1

おつかれさまです。 BigDecimalクラスを私用することをおすすめします。 詳細は参考URLをご覧になってみてください。

参考URL:
http://msugai.fc2web.com/java/class/BigDecimal.html

関連するQ&A

  • 割り算のやり方

    自分で筆算で計算すると 540÷5=18 となるのですが、答えが108でした。 あと、自分で筆算で計算して 0.482÷16=0.03125 となったのに、答えが0.030125でした。 どうして途中で0が入るのですか? 教えてください、お願いします。

  • 分数の割り算

    計算機を使えば答えはすぐにでますが、下記のような分数を簡単に計算できる方法はないでしょうか? 1/400000000 3/2000000 43/90000000000 など。ゼロが多すぎるので計算が途中で混乱してきます。何か良い方法がありましたらご教授お願い致します!

  • 「割り算」 と 「分数の掛け算」

    double型の変数にある値が代入されていて、 その数を半分にしようとしました。 演算部分を /2 としたらエラーが出てしまいました。 いろいろ試した結果、*0.5とすれば ちゃんと計算されるようなのですが、 どうしてこのようなことが起こるのか、よくわかりません。 どなたか、ご教授ください。よろしくお願いします。

  • 割り算 PART3

    前回の質問で色々な考え方を頂いたのでここで二つ皆さまにご質問させて頂きたく存じます。 式は前回同様、12000÷2÷500=12と12000÷1000=12の件です、 12000÷2÷500と順番に計算をして12と出しても良いのですが、÷1000の方がゼロを3つ取るだけで簡単に暗算が出来ます。その為その計算方法がとても便利だと思と質問させて頂きました。 結果として自分が欲しい数字は12です。どちらの計算でも12が出ます。 しかし、順番に計算した時の12の内訳は500の束です。500が12(500、500、500、500....)そして1000で割った時の12の内訳は1000の束です。1000が12(1000、1000、1000....) 同じ12という数字ですが12の内訳を出してみると違いますよね? しかし、同じ答えとして使えます。とくに暗算には有効ですね。 この関係について質問させて頂きました。 そこで、異なるアイディアを頂き興味深く感じました。 12000÷2=6000」を「6000が二つ」とするなら、 「6000÷500=12」は「12が500個」としなければなりません。(割り算の考え方が統一されていません)という物です。 しかし、例えば 12000÷2をして6000が出た後に、500で何枚出来るか考えた時は、この比の計算で出来ますよね? 500: 6000 = 1 :X このケースは500円で一枚出来るとするとXは12枚となりますよね? 500が12枚ですよね? 500×12と12×500も同じですが考え方はどうなるのでしょう? もうひとつの質問は12000÷2÷500=12 12000÷1000=12 で、それが同なのは、数÷数=数になるといった定義が成り立つからです。 この定義について詳しくご説明頂けませんでしょうか? 違う内訳の12を同じ答えとして使える理由を教えて下さい。 長くなってしまいましたが、ポイントは大きく分けて二つです。 宜しくお願い致します。

  • 小学生の算数 割り算の略し方について

    小学生の質問になりますが たとえば200÷20 だったら 20÷2に直して計算するかと思いますが 3200÷60を計算したところ答えは53 あまり20になります。 しかし320÷6をしたら 答えは53 あまり2 となります。 略して割り算する方法というのは使ってはいけないのでしょうか? あまりが出る時だけ、例外があるのでしょうか。

  • 割り算について

    例えば 2÷(1÷2)=4 のような計算をする場合、通常は()内を先に計算しますが、 ()内を計算せずに()を取り去ってしまって良いのでしょうか? もし取り去ると 2÷(1÷2)=2÷1×2=4 だと思うのですが、÷を二回重ねると×になる…って、正しいのでしょうか? 計算上はこうしないと答えが一致しないので、こうなるのかなぁと思うのですが、÷が2回で何故×になるのか… 直感的にはわかるような気がするのですが、うまく論理的な説明ができません。 すごく初歩的な内容で恥ずかしいのですが、自分で考えていたらこんがらがってきたので、皆さんの知恵をお貸しください。

  • 割り算 PART2

    以前にこういった質問をさせて頂きました。 →12000÷2÷500=12です。 この場合一気に計算する方法として1000で割っていきなり12と出す方法もあります。 なぜ1000でこの結果が出るのか教えて下さい。 単純に500×2=1000とかでは無く理屈を教えて下さい。 という物。 色々な方から、12000×1/2×1/500などとご説明を頂きました。 たしかに逆数の掛け算であれば1/2×1/500で1/1000になるのは分かりましたこの式であればそうなるのは明確に理解が出来ます。 しかし、図にして考えてみると… 12000÷2は6000が二つです。その6000を500で割ると12になります。500が12個です。 しかし、すぐ計算する方法の12000÷1000の場合は1000が12個です。 どちらも結果12ですが、12の意味、内容が違いますよね?500が12と1000が12…。 どなたか詳しくご説明頂けますか?(>_<)

  • 割り算の余りの求め方

    割り算の余りを求める計算式ってありますか(簡単な) チェックデジットの計算で「7で割った余り」というものがあり その説明で、「7で割った余り」の計算方法の説明に困難しています。 簡単な式や説明方法を知りたいのです。 (チェックデジットをご存じでない方は、チェックデジットについては無視してください) 今のところ、「7で割って、答えの整数を元の数字から引きなさい」と説明しています

  • 分数の割り算

    恥ずかしながら分数の割り算をど忘れしてしまいました。 下記の算式の答えが何故86304000になるのか?詳細な回答法を教えてください。 ★問題⇒21216400÷12分の2.95=86304000 問題通り、割り算で計算しても答えが割り切れません。 そこで、なんとなく掛け算も交えて計算すると答えを導けました。 ⇒21216400×12÷2.95=86304000 しかしなぜ、割り算の問題に、掛け算を交えて計算するのか意味がわかりません。算式が間違っているのでしょうか?

  • 簡単な割り算: 分子が2、分母が4,40、400。

    分子を例えば2 分母を例えば4として計算します。次に、この分母を大きな数字に変えていき、計算していきます。 2/4よりも2/400の方が答えは小さな数字です。 分母を大きくすると、答えは小さくなります。 分母を、ものすごく大きくする(例えば、4兆)と、2/4兆の答えはすごく小さな値です。 だんだんとゼロに近づくように思います。 さて、逆はどうでしょう。 分母を0.4で計算し、次に、分母を0.0000000000004で計算します。 すると、後者の方が答えは大きくなります。 では分母を0.000000000000000000000000000000000000000000004にすると 答えは大変大きな数字になります。 では、このような発想から分母をゼロで割ると、答えは 無限大でしょうか。 答えは、ない か、ゼロか という発想もあるかもしれませんが 上記のような発想では 無限大になると思います 違う??