.NET VB データ型
.NET Visual Basicデータ型(数値型、実数型、文字列型、日付型、論理型、オブジェクト型、10進数型)をサンプルコードを交えて解説。
VBのデータ型
VBでは、.NET Frameworkの「共通型システム(CTS)」に基づいたデータが用意されている。
Dim 変数名 As データ型
整数型
数値型には、Byte(バイト)型、Short(ショート)型、Integer(インテジャー)型、Long(ロング)型、SByte型、UShort型、Uinteger型、ULong型がある。
型名 | 符号 | サイズ | 値の範囲 | .NetFramework型 | 既定値 |
---|---|---|---|---|---|
Byte | 符号なし | 1バイト | 0 から 255 | System.Byte | 0 |
Short | 符号付き | 2バイト | -32,768 から 32,767 | System.Int16 | 0 |
Integer | 符号付き | 4バイト | -2,147,483,648 から 2,147,483,647 | System.Int32 | 0 |
Long | 符号付き | 8バイト | -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 (9.2…E+18) | System.Int64 | 0L |
SByte | 符号付き | 1バイト | -128 から 127 | System.SByte | 0 |
UShort | 符号なし | 2バイト | 0~65,535 | System.Int16 | 0 |
Uinteger | 符号なし | 4バイト | 0 から 4,294,967,295 | System.Int32 | 0 |
ULong | 符号なし | 8バイト | 0 から 18,446,744,073,709,551,615 (1.84 x 10 ^ 19 以上) | System.Int64 | 0 |
符号付きの型は最上位ビット(符号ビット)が1のものを負の値としている。
使用頻度としては、Integer型が多い。Integer型で値が収まらない場合はLong型を使用する。
Short型、Sbyte型は、メモリー消費を節約できる可能性があります。ただし、実務ではあまり使用したことがない。というもの現在のコンピュータの性能が向上したため、あまり気にするレベルではないため。
【宣言】
Dim 変数名 As Byte
Dim 変数名 As Short
Dim 変数名 As Integer
Dim 変数名 As Long
Dim 変数名 As SByte
Dim 変数名 As UShort
Dim 変数名 As Uinteger
Dim 変数名 As ULong
【サンプルコード】
Dim a As Byte = 1
Dim b As Short = 1
Dim c As Integer = 1
Dim d As Long = 1
Dim e As SByte = 1
Dim f As UShort = 1
Dim g As UInteger = 1
Dim h As ULong = 1
実数型
実数型は、小数点を含む数を扱う型
浮動小数点は、数を示す仮数部と小数部の位置を示す指数部で小数点を表しています。
型名 | サイズ | 値の範囲 | .NetFramework型 | 既定値 |
---|---|---|---|---|
Single | 4バイト | -3.4028235E+38 から -1.401298E-45 1.401298E-45 から 3.4028235E+38 | System.Single | 0.0F |
Double | 8バイト | -1.79769313486231570 E + 308から-4.94065645841246544 E-324 4.94065645841246544 E-324から1.79769313486231570 E + 308 | System.Double | 0.0D |
0.1を浮動小数点で表すと、「1.0E-1」となる。これは「1×10のマイナス1乗」
基本的に、Double(ダブル)型を使用します。現在は、コンピューターの性能が向上したため、Single(シングル)型の使用頻度は低い。
まるめ誤差があるため、科学計算やシミュレーション等の誤差が許容できる場合使用する。また、消費税率など一時格納場所としては使用できる。
【宣言】
Dim 変数名 As Single
Dim 変数名 As Double
【サンプルコード】
Dim a As Single = 0.1
Dim b As Double = 0.1
Dim c As Double = 0.2
'コンソール出力
Console.WriteLine("Single型 変数 a サンプル:" & a)
Console.WriteLine("Double型 変数 b サンプル:" & b)
Console.WriteLine("b + cサンプル:" & (b + c))
まるめ誤差
浮動小数点の仕組み上、10進数表記との間で誤差が生じるため、正確に表されない。
上記、実行結果にあるようにDouble型の変数b + cをした場合、期待値としては0.3であるがコンソールに出力してみると誤差が生じている。
10進数型
有効桁数が最大29桁で、丸め誤差が許されない計算に適している。実務的には外貨、売上、入金、消費税などの計算で使用している。
型名 | サイズ | 値の範囲 | .NetFramework型 | 既定値 |
---|---|---|---|---|
Decimal | 16バイト | 0~+/-79,228,162,514,264,337,593,543,950,335 (小数点なし)(正負の値) 0~+/-7.9228162514264337593543950335 (小数点以下28桁) 0 以外の最小値は +/-0.0000000000000000000000000001 (+/-1E-28) 有効桁数28~29桁 | System.Decimal | 0.0M |
Decimal型は、小数部分が1/10、1/100、1/1000が正確に表現できるため、浮動小数点で発生する「まるめ誤差」は発生しない。
そのため、業務系や基幹系、会計等では、よくDecimalが使用される。
パフォーマンスについて
Decimal型は、すべての数値型の中で最も低速です。選択する場合は、精度とパフォーマンスを検討する必要があります。
【宣言】
Dim 変数名 As Decimal
【サンプルコード】
Dim a As Decimal = 1
文字型
文字を扱うためのデータ型で、Char型とString型が用意されている。
型名 | サイズ | 値の範囲 | .NetFramework型 | 既定値 |
---|---|---|---|---|
Char | 2バイト | 1個のUnicode文字 | System.Char | ‘\0’ |
String | 可変長 | 0~21憶文字までのUnicode文字 | System.String |
【宣言】
Dim 変数名 As char
Dim 変数名 As String
【例】
Dim a As char = "Z"
Dim b As String = "ABC"
論理型
処理分岐などで主に使用されます。
型名 | サイズ | 値の範囲 | .NetFramework型 | 既定値 |
---|---|---|---|---|
Boolean | プラットフォームに依存 | True、またはFalse | System.Boolean |
内部的に専用ビット列でTrueとFalseを区別しています。明示的に初期値をセットしなかった場合は、Falseとなる。
数値型→Boolean型に変換した場合
0→Falseに変換される。
0以外の数値→Trueに変換される。
Boolean→数値型に変換した場合
False→0に変換される。
True→-1に変換される。
【宣言】
Dim 変数名 As boolean
【サンプルコード】
Dim a As boolean = false
日付型(Date)
日付を扱う場合は、Date型のデータ型を使用します。
型名 | サイズ | 値の範囲 | .NetFramework型 | 既定値 |
---|---|---|---|---|
Date | 8バイト | 西暦1年1月1日午前00:00:00から 西暦9999年12月31日午後11:59:59.9999999 までの日付データ | System.Date |
【宣言】
Dim 変数名 As Date
【サンプルコード】
Dim a As Date = #4/1/2020 12:00 PM#
'コンソール出力
Console.WriteLine("DATE型 サンプル:" + a)
オブジェクト型(Object)
オブジェクト型は、他のオブジェクトを参照するアドレスを格納するデータ型である。
任意の参照型 (文字列、配列、クラス、またはインターフェイス) を 割り当てることができ、任意の値の型 (数値、Boolean
、Char
、Date
、構造体、または列挙型) のデータを参照できる。
型名 | サイズ | 値の範囲 | .NetFramework型 | 既定値 |
---|---|---|---|---|
Object | 4バイト(※1) | すべての型への参照 | System.Object |
※1 4バイトは実データへの参照を格納する領域でこの他に実データのサイズが加算される。
オブジェクト型はコンパイル時に演算及び型のチェックが行われない。
【宣言】
Dim 変数名 As Object
【サンプルコード】
Dim a As Object
Dim b(0,0) As Object
Dim c(1) As Object