『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【VBA】SingleとDouble

この記事では 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 で宣言しておけば問題ないはずです。

コメント

  1. あとりえこばと より:

    【ChatGPT解説】VBAのSingle

    講師:こんにちは!今回はVBAのSingle型についてお話しましょう。Single型は、単精度浮動小数点数を扱うためのデータ型です。数値の計算や科学的な演算に使用されます。例えば、円周率や温度などの小数点以下の精度が必要なデータを操作するのに便利です。さて、どのような場面でSingle型を使いたいですか?
     
    生徒:面白そうですね!私は温度変換アプリを作りたいんです。摂氏と華氏の変換ができるようにしたいです!
     
    講師:素晴らしいアイデアです!温度変換アプリにはSingle型がうってつけです。摂氏と華氏の温度は小数点以下の桁数が必要なので、Single型は適しています。では、Single型の使い方を説明しましょう。
     
    生徒:お願いします!どのように使えばいいですか?
     
    講師:まず、変数の宣言です。Single型の変数を宣言するには、次のように書きます:

    Dim temperature As Single

    このようにすると、変数temperatureがSingle型の変数として宣言されます。これにより、温度データを格納するためのコンテナが作られます。
     
    生徒:なるほど、変数にSingle型を指定するんですね。それでは具体的な使い方を教えてください。
     
    講師:もちろんです!Single型の変数を使って温度の変換を行ってみましょう。

    Sub SingleSample()
        Dim celsius As Single
        Dim fahrenheit As Single
        celsius = 30.5
        fahrenheit = celsius * 9 / 5 + 32
        MsgBox celsius & "℃ は " & fahrenheit & "℉ です。"
    End Sub

    この例では、celsius変数に摂氏温度を代入し、その温度を華氏に変換してfahrenheit変数に格納しています。そして、メッセージボックスで摂氏と華氏の温度を表示しています。
     
    生徒:なるほど、Single型を使って正確な温度変換ができるんですね。便利ですね!
     
    講師:そうですね!Single型は小数点以下の精度が必要な計算やデータに適しています。温度変換アプリ作成に活用してみてください。
     
    生徒:ありがとうございます!楽しみに温度変換アプリを作ってみます!

  2. あとりえこばと より:

    【ChatGPT解説】VBAのDouble

    講師:こんにちは!今回はVBAのDouble型についてお話しましょう。Double型は倍精度浮動小数点数を扱うためのデータ型です。より高い精度の計算や大きな値の扱いに適しています。さて、どのような場面でDouble型を使いたいですか?
     
    生徒:面白そうですね!私は円周率の計算や科学的な演算を行うプログラムを作りたいです。高い精度が求められる場合にDouble型が役に立つんですね!
     
    講師:そうですね!Double型は高い精度が必要な計算に適しています。円周率のような無理数や、実数の計算にはDouble型が一般的に使用されます。Double型の使い方を説明しましょう。
     
    生徒:お願いします!Double型の使い方を教えてください。
     
    講師:まず、変数の宣言です。Double型の変数を宣言するには、次のように書きます:

    Dim value As Double

    このようにすると、変数valueがDouble型の変数として宣言されます。これにより、倍精度浮動小数点数を格納するためのコンテナが作られます。
     
    生徒:なるほど、変数にDouble型を指定するんですね。それでは具体的な使い方を教えてください。
     
    講師:もちろんです!Double型の変数を使って円周率の計算を行ってみましょう。

    Sub PiSample()
        Dim radius As Double
        Dim circumference As Double
        radius = 5.0
        circumference = 2 * 3.14159 * radius
        MsgBox "半径 " & radius & " の円の円周は " & circumference & " です。"
    End Sub

    この例では、radius変数に円の半径を代入し、その半径から円周を計算してcircumference変数に格納しています。そして、メッセージボックスで円の半径と円周を表示しています。
     
    生徒:なるほど、Double型を使って高精度な計算ができるんですね。とても便利です!
     
    講師:そうですね!Double型はより高い精度を求める場合に重宝します。円周率のような無理数や科学的な演算にはぜひDouble型を活用してみてください。
     
    生徒:ありがとうございます!円周率の計算にDouble型を使ってみます!楽しみです!