• 締切済み

凄い初歩的な質問かと思うんですが・・・

電卓を作っているんですが、 小数点計算を可能にする為double型で計算しているんですが、 例えば、555555555.0 + 5.0となると、答えが5.5555556E8となります。 なぜですか? まだdouble型の値の範囲超えてないですよね? 解決方法と合わせて教えてください。 お願いします。

みんなの回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

DecimalFormatクラスのドキュメンテーションは、詳しく分かりやすく書かれています。 http://www.exampledepot.com/egs/java.text/pkg.html ここのe311などを参考に、自分でいろんなコードを書いてみて、やり方を納得してください。

全文を見る
すると、全ての回答が全文表示されます。
  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

Javaのデフォルトの書式については、Double.toString()メソッドのドキュメンテーションを読んでください。 特定の書式をお望みの場合は、書式化: String.format()メソッド もしくは、java.text.DecimalFormatクラス または書式化出力: System.printf() など を使ってください。

reggae_88
質問者

お礼

ありがとうございます。 もしよろしければ、使用方法を教えてくれませんか? 例えば最初の質問のdouble型での555555555.0 + 5.0の計算が、 そのままの答えで出るような感じで。 電卓を作っていて最初からlong型で計算すれば、 整数のみの時はOKでも小数点が絡むとダメで、 小数点を考えてdouble型でいくと整数の表示が・・・ とゆう感じで困ってます。

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

関連するQ&A

  • エクセルの計算について質問です

    エクセルの計算について質問です 数値の計算で、電卓で算出した値とエクセルで計算した値とが異なり困ってます。 【計算内容】 A(整数) × B(小数部2桁) = C(整数) ※Cは小数点以下切捨てとしたい ※エクセル計算ではROUNDDOWNを使用 【実際の計算結果】 (1)10,000,010,000.00 × 9999.99 = エクセル:99,999,999,999,999、電卓:99,999,999,999,999 (2)10,000,010,000.01 × 9999.99 = エクセル:100,000,000,000,000、電卓:99,999,999,999,999.9999 (1)は電卓とエクセルで結果は一致しますが、(2)は一致しません。 エクセルで小数点以下第4位が丸められてるようです。 【エクセルで算出したい値】 (2)ではDに999,999,999,999と出力したいです。 関数INTやROUNDDOWNを使ってみたのですが、うまくいきませんでした。 セルCの書式設定と、どの関数を使用すればよいのか教えていただけると大変助かります。

  • 余りを出す割り算の演算方法

    例えば電卓で 20÷3を求めると、6.666666......と出てきますが、小数点以下の値を出さずに 6余り2 というように計算するにはどうしたらいいでしょうか? 普通の電卓では無理だと思いますが、Windowsに組み込まれている電卓のアプリケーションでは可能でしょうか?

  • 浮動小数点数型

    単精度浮動小数点型と倍精度浮動小数点数型、それぞれ値がとりうる範囲を教えてください。 単精度浮動小数点型 負の値は -3.4028235E+38 ~ -1.401298E-45、 正の値は 1.401298E-45 ~ 3.4028235E+38 の範囲の値 倍精度浮動小数点数型 負の値は -1.79769313486231570E+308 ~ -4.94065645841246544E-324、 正の値は 4.94065645841246544E-324 ~ 1.79769313486231570E+308 の範囲の値 とは記述してあるのですが、実際に小数1桁なら整数部はどのくらいの範囲の値がとれるのか、皆目わかりません。 どうか、わかりやすく教えてください。 よろしくお願い致します。

  • エクセルVBA データ型 SingleとDouble

    SingleとDoubleともに、整数部分の範囲についてはどのように 考えればよいのでしょうか?例えば、小数点以下4桁までを正確 に計算できれば良く、変数の値が 54321.**** となる場合は Singleで良いのでしょうか? SingleとDoubleで対応できる、整数部分の範囲を教えてください。 お手数ですが、よろしくお願いします。

  •  Javaでのある数の小数点乗について

     Javaでのある数の小数点乗について  数学での計算をJavaを使って計算している所です。Javaの中でもDoubleを使うのではなく、BIgDecimalクラスを使って計算をしています。しかし、BigDecimalの値をBigDecimal乗するという事は出来ないですよね? Math.powを使えばDouble型のDouble乗は出来ますが…  そこで、任意の精度で小数点の小数点乗を求める方法は無いでしょうか? 必要ないかもしれませんが参考までに 言語:Java OS:MacOS 10.5

    • ベストアンサー
    • Java
  • C言語の初歩的な質問です。

    例えば、 ans = 23 / 31 というように代入したいのですが、この計算を10小数点以下10行で後は切り捨て(もしくは四捨五入)を行い、その値をansに代入するというようにするにはどうすればいいんでしょうか? pirntf("%.10f", 23.0 / 31.0); じゃだめなんです。 結構急いでいます。よろしくお願いします。

  • C++での質問

    はじめまして。現在C++でプログラミングの勉強をしています。そこで逆数の和を求める問題があるのですが、1÷3や1÷7といった計算を1/3,1/7というように入力したのですが、なぜか"0.00000"と表示されてしまいます。ためしに6÷4といった計算を"4/6"と入力しても、"1.000000"と小数点以下の値が表示されないんです。変数の宣言はdouble型でやったのですが・・・なぜでしょうか?もし分かる方いましたら、教えてください!!

  • VBAのsingle,doubleのデータ型のE+,E-

    VBAのデータ型longやsingleの E+やE-は何を表しているのでしょうか? 単精度浮動小数点型 3.4028235E+38~などです。 また、single doubleはそれぞれ-3.4028~、-1.797~ などと書いてありますが、1万台で小数点以下の数値がある値、たとえば17,562.256はどのデータ型を使えばよいのでしょうか?

  • 計算機の使用法

    計算機を使った計算のやり方について質問します。 答えを小数点以下第5位を四捨五入した小数点第4位までの小数 で表せ。という問題があって、答えは 2/3√3になります。 こういう場合は2を3√3の計算した数値の小数第5位を四捨五入したもので割ればいいのですか?それとも、小数第10位くらいまで計算した値で割って、最終的に第5位を四捨五入すればいいのでしょうか? この場合はいいですが、複雑な計算になると、四捨五入したものどうしをたくさん計算すれば最終的な答えにだいぶ誤差が生まれる気がしまて。すみません単純な質問をして。

  • インターネットに繋がった家庭用パソコンでの計算は、やはり桁数に限界が有りますか?

    パソコンで計算をしようと考えた時、どのような方法が良いでしょうか? XPですが、[スタート]→[すべてのプログラム]→[アクセサリ]→[電卓] で出て来ます電卓で、 例えば 360÷7= を計算しますと、 51.428571428571428571428571428571 と答えが出て来ます。 この場合、428571を永遠に繰り返すことが簡単に予想できますが、 割り算によってはこれ位の桁数ではその先が全く予想できない答えも有りますよね。 例えば、 7÷6.7=1.0447761194029850746268656716418……… この先いくつになるのか?と考えた時、これ以上計算することはパソコンで出来ますか? ヤフー簡易計算では、1.04477611940298 と、小数点第14位までしか出て来ません。 (http://search.yahoo.co.jp/search?p=7%2F6.7&ei=UTF-8&fr=top_v2&x=wrt&meta=vc%3D) XPの電卓よりも、さらに詳しく計算できる方法が有りましたら、ぜひお教え下さい。