ここではVB.NETでの基本型の変換について見ていきます。 VB.NETに固有な型変換関数であるCInt
などのCXxx
系関数を中心に説明しますが、それ以外に.NET Frameworkでサポートされている型変換(ToString
やParse
などのメソッド)については基本型の型変換で詳しく解説しています。
数値→数値変換
数値から数値へ変換する場合、つまり数値の型を変える場合は従来通りCXxx
関数を使用できます。
Dim b As Byte = 15
Dim i As Integer = 7
Dim l As Long = 2
b = CByte(i) ' Byte型への変換、b = 7となる
i = CInt(l) ' Integer型への変換、i = 2となる
l = CLng(b) ' Long型への変換、l = 7となる
Dim s As Single
Dim d As Double
s = CSng(l) ' Single型への変換、s = 7.0となる
d = CDbl(s) ' Double型への変換、d = 7.0となる
Dim bln As Boolean
bln = CBool(s) ' Boolean型への変換、0以外の数値はTrueと扱われるのでbln = Trueとなる
単純に浮動小数点値から整数値に変えるにはCInt
関数などを使うことができますが、四捨五入や切り捨てなど丸めの方法を指定して整数値に変える必要がある場合はMath.Round
メソッドなどを使用する必要があります。 詳しくは数学関数 §.実数の丸め・端数処理 (Truncate, Ceiling, Floor, Round)での解説を参照してください。
数値を符号なし整数型へ変換するCUInt
などについては符号なし整数型 §.型の変換で解説しています。
数値→文字列変換
数値から文字列へ変換する場合には、CStr
関数を使用することができます。
Dim str As String
Dim i As Integer = 15
str = CStr(i) ' str = "15"
str = CStr(3.14) ' str = "3.14"
ToStringメソッド
CStr
に加え、VB.NETではToString
メソッドを使用することができます。 上のコードと等価なコードをToString
を用いて記述した例を示します。
Dim str As String
Dim i As Integer = 15
str = i.ToString() ' str = "15"
str = (3.14).ToString() ' str = "3.14"
この例のように、数値リテラルを括弧でくくることにより直接ToStringメソッドを使用することもできます。
これだけではCStr関数とToStringメソッドの違いはないように見えますが、ToStringメソッドには文字列化する際に書式を指定できるという利点があります。
Dim str As String
Dim i As Integer = 15
' 整数四桁で表記
str = i.ToString("D4") ' str = "0015"
' 小数点以下6桁で表記
str = (3.14).ToString("F6") ' str = "3.140000"
この例のように、ToStringメソッドの引数で書式指定文字列を指定することにより、文字列化に際して数値の表記方法を指定することができます。 書式指定文字列には次のようなものがあります。
書式指定文字 | 適用される書式 | 使用できる型 |
---|---|---|
D
|
値を十進数表記にする。 | 整数型 (Integer , Long など) |
X
|
値を十六進数表記にする。 | |
E
|
値を指数表記にする。 | 実数型 (Single , Double など) |
F
|
値を固定小数点表記にする。 | |
G
|
値を固定小数点または指数のいずれか簡潔な方の表記にする。 | |
P
|
パーセントとして表記する。 | |
N
|
三桁ことに区切り文字(カンマ)をつけて表記する。 | 整数型および実数型 |
これらの書式指定文字に加え、桁数などを指定することで0埋め・右揃えなどを行うことも出来ます。 また、VBでサポートされていたFormat
関数のような書式化を行うこともできます。
書式指定文字と書式の指定方法・変換結果については、書式指定子で詳しく解説しています。
文字列→数値変換
文字列から数値へ変換する場合にもCXxx
関数を使用することができます。
Dim i As Integer
Dim s As Single
i = CInt("15") ' i = 15
s = CSng("3.14") ' s = 3.14
Parseメソッド
この方法のほかにもParse
メソッドを使用することもできます。 Parse
メソッドは目的の型名.Parse("数値を表す文字列")
のように使用します。
Dim i As Integer
Dim s As Single
i = Integer.Parse("15") ' i = 15
s = Single.Parse("3.14") ' s = 3.14
これらのいずれの方法を使用しても適切に変換されます。 また、次のような複雑な表記の数値も正しく変換されます。
Dim i As Integer
Dim s As Single
i = CInt("1,234,567") ' i = 1234567
s = CSng("3.14E+05") ' s = 314000
i = Integer.Parse("654,321", Globalization.NumberStyles.Number) ' i = 654321
s = Single.Parse("2.71828e-3", Globalization.NumberStyles.Float) ' s =0.00271828
Parseメソッドでは許容される表記を指定して変換することができます。 ここで指定した表記以外の表記の文字列が指定された場合は例外エラーが発生します。 表記方法の詳細についてはGlobalization.NumberStyles列挙型を参照してください。
このほか、Parseメソッドの使い方・エラー処理の例については基本型の型変換 §.文字列への/からの変換を参照してください。
日付⇆文字列変換
日付型(DateTime)も数値の場合と同様にToString・Parseメソッドを使って変換することができます。 日付型と文字列の相互変換については日時・文字列の変換と書式で詳しく解説しています。