雑記
 

Visual Basic のデータ型

2021/4/4

→ C# の情報に切り替える

この記事が対象とする製品・バージョン

VS2019 Visual Studio 2019 対象です。
VS2017 Visual Studio 2017 対象です。
VS2015 Visual Studio 2015 対象です。
VS2013 Visual Studio 2013 対象です。
VS2012 Visual Studio 2012 対象です。
VS2010 Visual Studio 2010 対象です。
VS2008 Visual Studio 2008 対象です。
VS2005 Visual Studio 2005 対象です。
VS.NET 2003 Visual Studio 2003 対象です。
VS.NET 2002 Visual Studio (2002) 対象です。

目次

 

型の基本情報

小数…小数が表現できるかを示しています。

正確…正確な値を示すことができるかを表しています。×の場合は値に誤差が発生しますので、金額の計算など値の正確さが重要な場合は使用できません。

VB 名称
読み方
小数 正確 値の範囲
Boolean 論理型
ブール/ブーリアン
- - True または False
Byte バイト型
バイト
× 0 ~ 255
Char 文字型
キャラ
- - 1つのUnicodeのコードポイント
※多くの文字は1つのコードポイントで1文字ですが、複数のコードポイントで1文字を表す場合もあります。
※数値に変換すると0 ~ 65535ですが数値用ではありません。
Short 短整数型
ショート
× -32768 ~ 32767
Integer 整数型
インテジャー
× -2147483648 ~ 2147483647
Long 長整数型
ロング
× -9223372036854775808 ~ 9223372036854775807
SByte 符号付きバイト型
エスバイト
× VB2005以降で使用可能。
-128 ~ 127
UShort 符号なし短整数型
ユーショート
× VB2005以降で使用可能。
0 ~ 65535
UInteger 符号なし整
数型
ユーインテジャー
× VB2005以降で使用可能。
0 ~ 4294967295
ULong 符号なし長整数型
ユーロング
× VB2005以降で使用可能。
0 ~ 18446744073709551615
Decimal 十進型
デシマル
※小数の桁数によって異なります。

・小数の桁数が0の場合
-79228162514264337593543950335 ~ 79228162514264337593543950335

・小数の桁数が28桁の場合
-7.9228162514264337593543950335 ~ 7.9228162514264337593543950335

・一番細かい値(分解能)
0.0000000000000000000000000001

Single 単精度浮動小数点型
シングル
× -340282350000000000000000000000000000000
~ 340282350000000000000000000000000000000

一番細かい値(分解能)
0.00000000000000000000000000000000000000000001401298

Double 倍精度浮動小数点型
ダブル
× -17976931348623157000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
0000000000000000000000000

179769313486231570000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000

一番細かい値(分解能)
0.00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000494065645841246544

Date 日付型
デイト
- - 0001年1月1日 0時00分00秒 ~ 9999年12月31日 23時59分59.9999999秒

一番細かい値(分解能)
100ナノ秒
Object オブジェクト型
オブジェクト
- - (任意の型を格納できます)
String 文字列型
ストリング
- - 0 個 ~ 約 20 億個の文字 (厳密にはUnicodeのコードポイント)

読み方は私が一般的だと思う読み方です。絶対的なものではありません。

 

数値にはどれを使うべきか?

通常は次のように使い分けてください。

  使用する型
整数 Integer
もっと桁数の大きい整数 Long
さらに桁数の大きい整数
または、
小数部分がある数値
Decimal

 

これで何か問題がある場合は、個別に検討します。いくつかのケースを紹介します。

この表にはVBの型ではありませんが、フレームワークで定義されている方もいくつか載せています。たとえば、無限の桁数の数値が必要な場合はフレームワークのBigIntegerが使用できます。

金額・数量 Decimal
科学的な計算(細かい誤差が許容できる場合) Double
文字コード Char
巨大な桁数の数値(小数あり、誤差あり) Double
桁数に制限がない数値 System.Numerics.BigInteger
APIなど外部と連携 Integer
バイナリーデータ Byte
日付・時刻 Date
期間 System.TimeSpan
平面座標 System.Drawing.Point または System.Drawing.PointF
虚数・複素数 System.Numerics.Complex
位置情報(緯度、経度、高度) System.Device.Location.GeoCoordinate
平面ベクトル System.Numerics.Vector2
空間ベクトル System.Numerics.Vector3

 

誤差の例

正確列 が × の場合の誤差の例

下記の例では、0.05 を 10回 たし算するので、結果は 0.5 になることを期待しますが、実際には 0.5 にはなりません。

Dim value As Single = 0.05

value += 0.05F ' 0.05 × 2 = 0.1  になることを期待
value += 0.05F ' 0.05 × 3 = 0.15 になることを期待
value += 0.05F ' 0.05 × 4 = 0.2  になることを期待
value += 0.05F ' 0.05 × 5 = 0.25 になることを期待
value += 0.05F ' 0.05 × 6 = 0.3  になることを期待
value += 0.05F ' 0.05 × 7 = 0.35 になることを期待
value += 0.05F ' 0.05 × 8 = 0.4  になることを期待
value += 0.05F ' 0.05 × 9 = 0.45 になることを期待
value += 0.05F ' 0.05 × 10= 0.5  になることを期待

Debug.WriteLine(value) '0.50000006 と出力されます。

 

その他の情報

VBの型 フレームワークの型 サイズ
(バイト)
型宣言文字 型文字 実数リテラルの記述例 備考
Boolean System.Boolean ※1     True または False  
Byte System.Byte 1     1  
Char System.Char 2   c "字"c  
Short System.Int16 2   S 1S  
Integer System.Int32 4 % I 1I パフォーマンスが良いことが多い。(特に32ビットCPUの場合)
Long System.Int64 8 & L 1L  
SByte System.SByte 1     1  
UShort System.UInt16 2   US 1US  
UInteger System.UInt32 4   UI 1UI  
ULong System.UInt64 8   UL 1UL  
Decimal System.Decmal 16 @ D 1D 数値の中でパフォーマンスが最も悪い。
0 を除いた場合の絶対値の最小値は
0.0000000000000000000000000001 (1E-28)
Single System.Single 4 ! F 1.0F 値の範囲
負の場合:-3.4028235E+38 ~ -1.401298E-45
正の場合:1.401298E-45 ~ 3.4028235E+38
Double System.Double 8 # R 1.0R 値の範囲

負の場合:
-1.79769313486231570E+308 ~ -4.94065645841246544E-324

正の場合:
4.94065645841246544E-324 ~ 1.79769313486231570E+308

Date System.DateTime 8     #6/27/2024#  
Object System.Object 4 または 8 ※2        
String System.String ※1 $   "文字列"  

サイズは情報量のサイズです。実際に使用する物理メモリのサイズではありません。

※1 プラットフォームによってサイズが異なります。

※2 32ビットのプラットフォームの場合4バイト、64ビットの場合8バイト。

 

参考

データ型の概要 - Visual Basic | Microsoft Docs