[VBA] 単精度/倍精度浮動小数点数型変数

 今回は 単精度浮動小数点数型変数 (Single)倍精度浮動小数点数型変数 (Double) について解説します。

変数のデータ型④ 単精度浮動小数点数型変数 (Single)

 単精度浮動小数点数型変数 (Single) には 32 bit の符号付き単精度浮動小数点数が格納されます。

 符号:1 bit 指数部:8 bit 仮数部:23 bit

 扱える範囲は

 負の値:-3.4028235E+38 ~ -1.401298E-45
 正の値:1.401298E-45 ~ 3.4028235E+38

となっています。ちなみに単精度浮動小数点数は英語で Single precision floating point number といいます。C、C++、Java などでは float という名称でよばれています。
 

変数のデータ型⑤ 倍精度浮動小数点数型変数 (Double)

 倍精度浮動小数点数型変数 (Double) には 64 bit の符号付き倍精度浮動小数点数が格納されます。

 符号:1 bit 指数部:11 bit 仮数部:52 bit

 扱える範囲は

 負の値:-1.79769313486231570E+308 ~ -4.94065645841246544E-324
 正の値:4.94065645841246544E-324 ~ 1.79769313486231570E+308

となっています。倍精度浮動小数点数の英語は Double precision floating point number です。どちらにしても長い名前ですね。
 

単精度/倍精度浮動小数点数型の精度

 Single, Double ともに実数の近似値を格納しますが、その精度が大きく異なります。Single は有効数字約 7 桁、Double は約 15 桁の精度です。12345.678912345 という値を Single, Double に入れて表示させてみます。

 'Single と Double の精度比較

 Sub SingleDoubleTest()

  Dim x As Single
  Dim y As Double

  x = 12345.678912345
  y = 12345.678912345

  Debug.Print "x = " & x
  Debug.Print "y = " & y

 End Sub

 マクロを実行すると

 x = 12345.68
 y = 12345.678912345

と表示されます。Double で宣言した変数 y には値がそのまま入りますが、Single では 7 桁の数字に丸められています。実際のところ、Single を使う機会はほとんどないと思います。小数を入れる変数は全て Double で宣言しておけば問題ないはずです。

 ≫ VBA 辞典メニューに戻って他の記事も読んでくださいな~♪

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください