• ベストアンサー

DoubleとLongの範囲

お世話になります、 DoubleとLong型ではどちらのほうが有効範囲が広いのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

A.n桁のビットで表せる数は、2のn乗である。 B.「正負の符号」を表すには1ビット必要で、数を表すのに使えるのはn-1桁に減る。 C.符号付のとき、正の整数と負の整数の間に0があるので注意する。 D.実数型の時は、指標(数)部と実数部の2つに分けて、総数ビットを前半と後半に分けてそれぞれが表現する。 --- 問題の建て方がおかしいですよ。整数を表現する整数型と実数を表現する実数型を、表現できる数の大小・有効範囲で考えてはおかしいとわたしには思えます。一方は離散型 数の表現で他方は擬連続型だから、用途が違う。 実数型はデータの「有効桁数」が問題なんでしょう。 通貨型というのもビジネスではひつようなので、良ければ調べて見てください。 以下解説されている良さそうなWEBページを紹介しま す。 ●Long(倍長整数型)について http://plaza29.mbn.or.jp/~chata/sengen.html http://yokohama.cool.ne.jp/yokohama/11147/hsp/datatype.html http://ohmoriws1.ms.kagu.sut.ac.jp/1997/sotsuken/miyakosi/h01.html ●Double型 http://www.rkmath.rikkyo.ac.jp/~kida/realrep.htm (この中の記述)64ビット実数型(倍精度実数型)  指数部に 11 ビット、有効数字に 52 ビットを割り当て、指数部のオフセットを 127=7Fh から 1023=3FFh に変更したものです。表現できる正の数は 2.2*10^{-308} から 1.7*10^{308} で有効数字は 10進で 15桁あります。

takataka111
質問者

お礼

ありがとうございました、 勉強します。m(_ _)m

その他の回答 (1)

  • Fat01ton
  • ベストアンサー率46% (122/264)
回答No.1

何のプログラムのことかはっきりしませんが VBAなら手元の書籍では Long型(長整数型) -2,147,483,648~2,147,483,647 Double型(倍精度浮動小数点型) 負の値は -1.79769313486231E308~-4.94065645841247E-324 正の値は 4.94065645841247E-324~1.79769313486232E308 とあります。 Doubleの方が有効範囲が広いということでしょう。

takataka111
質問者

お礼

ありがとうございました。 変数のオーバーフローについての 問題でした。

関連するQ&A

  • long doubleの有効桁数を教えてください。

    long doubleの有効桁数を教えてください。 環境で一概に言えないと思いますが、 私の環境では、sizeof(long double)で12バイトです。 OS Windows Vista(32bit) GCC minGW よろしくお願いします。

  • VC++6.0 long型とdouble型の掛け算

    VC++6.0 long型とdouble型の掛け算について ----------------------------- long lAnser; long lHoge = 100; double dHoge = 1.15; lAnser = lHoge * dHoge; ------------------------------ 上記のように演算したところ lAnserは「114」になりました。 なぜ、「115」にならないのでしょうか? また、どうすれば「115」になるのでしょうか? ご教授よろしくお願いします。

  • integer型、long型、double型

    vb6.0についてお聞きいたします。 こちらの問題は、visual studio 2005のvbでは生じません。 windows xp上で動かしているのですが、どうやら 何もしていないあるパラメータに32000ぐらいの数字よりも大きな 数字をいれるとエラーになってしまいます。 それも、integer型、long型、double型のすべての型で生じます。 そういうものなのでしょうか? HPをいろいろ見ましても、long型で20億ぐらいは 表現できるように書いてあるのですが。

  • ダブルロングサイズのベッド用シーツ

    タイトルのままなんですが、ダブルロングサイズ(140×210×30)のベッドを購入しました。 現在はダブル用のフラットシーツを使っていますが、ベッドメーキングが苦手なので、ボックスシーツを購入したいと思い探しているのですが、全然見つかりません。 ダブルロング購入者の方はそのあたりをどうしていらっしゃいますか? せっかくなので、ビシッとそろえたいと思います。 おすすめ通販や、おすすめ寝具ブランドがあれば教えてください!

  • Double,Longをファイルに書き込み

    以下のように、Double,Longをファイルに書き込もうとした場合、どのようにキャストをすればよろしいのでしょうか? (String)でString型への変換や Integer.parseInt等を試したのですが、できませんでした。よろしくお願いします。 import java.io.*; class test { public static void main(String[] args) { double dNumber = 3.45; long lNumber = 12345; BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt")); bw.write(dNumber); bw.write(lNumber); } //end main } //end class

    • ベストアンサー
    • Java
  • long double型の戻り値を持つ関数について

    文字列を浮動小数点に変換したいと思っています。 StrToFloat()を用いたのですが、有効数値がケタ落ちしてしまいました。 そこで、次のように関数を定義して実行したところ、やはり戻り値の値がケタ落ちしました。 long double StrToValue(AnsiString str) { ・・・・・ return value; } 具体的にはlong doubleの有効数値がdouble型の有効数値にまで落ちてしまっています。 次にポインタを使い、次のように変更したのですが、結果は同じでした。 void StrToValue(AnsiString str, long double *value) { ・・・・・ *value=・・・; ・・・・・ } どなたか、この解決方法と、できれば理由を教えてください。 なお使用した言語は、C++Builder 5 環境はWindows 98 です。

  • STLのto_stringにlong double

    こんばんは。 STLにto_string関数を見つけました。 変数の型を見るとlong doubleもサポートしているようなので値を入れてみたところfloat値を文字列に変換したものしか得られませんでした。 どのようにすればlong doubleを文字列として取得できるのでしょうか? 環境はVisualStudio2013です。

  • long doubleの表示方法

    long doubleの型を使いたいのですが、出力するとき、 printf("%e\n", A); とすると、8桁しか出力されません。 これを16桁まで出力させる方法はないでしょうか。

  • float double の範囲

    javaのサイト見てます データ型にfloat doubleというのがあるのですが、 範囲が float 3.40282347E+38 double 1.79769313486231570E+388 と記載されているのですが これはどうゆう意味でしょうか? 小数点38桁388桁までという意味でしょうか?

  • 【Excel】ダブルクリックで、範囲をコピペする。

    Excelで、以下のような操作ができるようにしたいです。 E2を ダブルクリックすると、 B3~C7の範囲をコピーして、E3~F7に貼り付け。 B9を ダブルクリックすると、 E3~F7の範囲をコピーして、B10~C14に貼り付け。 E9を ダブルクリックすると、 B10~C14の範囲をコピーして、E10~F14に貼り付け。 ・ ・ ・ このような設定をしたいのですが、 よい方法を教えて下さい。 Excelは 2013です。