Visual Basic 図解 基礎解説
VB.NET 2002 対応 VB.NET 2003 対応 VB2005 対応

 

Visual Basic 中学校 > 図解 基礎解説 >

データ型


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

VB2005 対応 Visual Basic 2005 対象です。
VB.NET 2003 対応 Visual Basic.NET 2003 対象です。
VB.NET 2002 対応 Visual Basic.NET (2002) 対象です。
VB6対応 Visual Basic 6.0 × 対象外です。

 

概要

・データ型の概要を表形式で掲載します。

 

1.型の基本情報

この表はVBで用意されている全データ型の基本的な情報です。

データ型 名称・読み方 小数 負数 正確 値の範囲
Boolean ブール型
ブール
- - - True または False
Byte バイト型
バイト
× × 0 〜 255
Char 文字型
キャラ
- - - 1文字(Unicode)
※数値に変換すると0 〜 65535ですが数値用ではありません。
Short 短整数型
ショート
× -32768 〜 32767
Integer 整数型
インテジャー
× -2147483648 〜 2147483647
Long 長整数型
ロング
× -9223372036854775808 〜 9223372036854775807
SByte 符号付バイト型
エスバイト
× -128 〜 127
(VB2005以降)
UShort 符号なし短整数型
ユーショート
× × 0 〜 65535
(VB2005以降)
UInteger 符号なし整数型
ユーインテジャー
× × 0 〜 4294967295
(VB2005以降)
ULong 符号なし長整数型
ユーロング
× × 0 〜 18446744073709551615
(VB2005以降)
Decimal 10進型
デシマル
※小数の桁数によって異なります。

・小数の桁数が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
Object オブジェクト型
オブジェクト
- - - (任意の型を格納できます)
String 文字列型
ストリング
- - - 0 個 〜 約 20 億個の文字 (Unicode)

小数 … 小数が表現できるかを示しています。数値型以外の型には関係ありません。

負数 … 負の数(ゼロより小さい数、マイナス)が表現できるかを示しています。数値型以外の型には関係ありません。

正確 … 正確な値を示すことができるかを表しています。×の場合は値に誤差が発生します。金額の計算など値の正確さが重要な場合はこの項目が×になっている型(Single, Double)は使用しないでください。数値型以外の型には関係ありません。

誤差の例

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Value As Single = 0.05

Value += 0.05
'0.05 ×2 = 0.1  になるはず。
Value += 0.05 '0.05 ×3 = 0.15 になるはず。
Value += 0.05 '0.05 ×4 = 0.2  になるはず。
Value += 0.05 '0.05 ×5 = 0.25 になるはず。
Value += 0.05 '0.05 ×6 = 0.3  になるはず。
Value += 0.05 '0.05 ×7 = 0.35 になるはず。
Value += 0.05 '0.05 ×8 = 0.4  になるはず。
Value += 0.05 '0.05 ×9 = 0.45 になるはず。
Value += 0.05 '0.05 ×10= 0.5  になるはず。

MsgBox(Value) '←0.5000001と表示される

 

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

通常の数値にはIntegerを使用します。値が正確でパフォーマンスにも優れているからです。

小数が必要な場合にはDecimalを使用します。値が正確だからです。

その他のいくつかの場合については、適切な型の使用例を挙げておきます。

金額・数量 Decimal
科学的な計算(細かい誤差が許容できる場合) Double
バイナリデータ Byte
文字を数値で表現する場合 Byte, Char
巨大な桁数の整数。(正確さ・パフォーマンス重視) Long
巨大な桁数の数値。(正確さ重視。パフォーマンスは多少悪くても良い場合) Decimal
巨大な桁数の数値。(パフォーマンス重視。細かい誤差は許容できる場合) Double
APIなど外部と連携 Integer

 

 

 

2.その他の情報

この表は各データ型に関する付加的な情報です。

VB .NET Framework 公称サイズ ※1 ※2 備考
Boolean System.Boolean 2 バイト      
Byte System.Byte 1 バイト      
Char System.Char 2 バイト   c  
Short System.Int16 2 バイト   S  
Integer System.Int32 4 バイト % I パフォーマンスが最も良い(32ビットCPUの場合)
Long System.Int64 8 バイト & L  
Sbyte System.SByte 1 バイト      
UShort System.UInt16 2 バイト   US  
UInteger System.UInt32 4 バイト   UI  
ULong System.UInt64 8 バイト   UL  
Decimal System.Decimal 16 バイト @ D パフォーマンスが最も悪い。
0 を除いた場合の絶対値の最小値は
0.0000000000000000000000000001 (1E-28)
Single System.Single 4 バイト ! F 値の範囲
負の場合:-3.4028235E+38 〜 -1.401298E-45
正の場合:1.401298E-45 〜 3.4028235E+38
Double System.Double 8 バイト # R 値の範囲

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

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

Date System.DateTime 8 バイト     #で囲んだリテラルはDate型と看做されます。
Object System.Object 4 バイト      
String System.String   $   "で囲んだリテラルはString型と看做されます。

公称サイズ … サイズは実際のメモリ使用量とは異なります。実際のメモリ使用量は環境によって異なります。

※1 … 変数を宣言するときにこの文字を使用できます。例:Decimal型の変数を宣言する場合 Dim Value@ という書き方が可能。

※2 … リテラルの型を指定するときに使用できます。例:Long型のリテラルを記述する場合 Value = 100L

 

3..NET Frameworkの型

VBで用意されていない型でも .NET Frameworkの構造体・クラスとして利用することは可能です。以下にいくつかの例を示します。

ただし、これらの型を使用する場合は通常の型のような型変換機能などが使いにくいので通常は使わない方が良いでしょう。

構造体 読み方 サイズ 値の範囲
System.SByte エスバイト 1 バイト -128 〜 127
System.UInt16 ユーイント16 2 バイト 0 〜 65535
System.UInt32 ユーイント32 4 バイト 0 〜 4294967295
System.UInt64 ユーイント64 8 バイト 0 〜 18446744073709551615
System.IntPtr イントピーティーアール   (環境に依存)
System.UIntPtr ユーイントピーティーアール   (環境に依存)

※SByte, UInt16, UInt32, UInt64はVB2005からはVBの型として使用可能です。