| 雑記 | 
Visual Basic 中学校 > 雑記 >
2021/4/4
この記事が対象とする製品・バージョン
| 
			 | 
		Visual Studio 2019 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2017 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2015 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2013 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2012 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2010 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2008 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2005 | ◎ | 対象です。 | 
| 
			 | 
		Visual Studio 2003 | ◎ | 対象です。 | 
| 
			 | 
		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の場合 ・小数の桁数が28桁の場合 ・一番細かい値(分解能)  | 
	
| Single | 単精度浮動小数点型 シングル  | 
		〇 | × | -340282350000000000000000000000000000000  ~ 340282350000000000000000000000000000000 一番細かい値(分解能)  | 
	
| Double | 倍精度浮動小数点型 ダブル  | 
		〇 | × | -17976931348623157000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 0000000000000000000000000 ~ 179769313486231570000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000000000 一番細かい値(分解能)  | 
	
| 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 | 値の範囲 負の場合: 正の場合:  | 
	
| 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