この記事では VBA の Single (単精度浮動小数点数型変数) と Double(倍精度浮動小数点数型変数)について解説します。
【VBA】Single(単精度浮動小数点数型変数)
VBA の 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 という名称でよばれています。
【VBA】Double(倍精度浮動小数点数型変数)
VBA の 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, Double ともに実数の近似値を格納しますが、その精度が大きく異なります。Single は有効数字約 7 桁、Double は約 15 桁の精度です。12345.678912345 という値を Single, Double に入れて表示させてみます。
'[VBA] SingleとDoubleの精度比較 Sub Single_Double_Test() 'xをSingle型で定義 Dim x As Single 'yをDouble型で定義 Dim y As Double x = 12345.678912345 y = 12345.678912345 Debug.Print "x: " & x Debug.Print "y: " & y End Sub 'Single_Double_Test()の実行結果: 'x: 12345.68 'y: 12345.678912345
Double で宣言した変数 y には値がそのまま入りますが、Single では 7 桁の数字に丸められています。実際のところ、Single を使う機会はほとんどないと思います。小数を入れる変数は全て Double で宣言しておけば問題ないはずです。
コメント