値の変換

注意:
この文書は以前「.NETでいきまっしょい!」で公開していたものですが、公開以降メンテナンスされていません。 今や古い情報となった内容が記載されている場合があるのでご注意ください。

数値→数値変換

 数値から数値へ変換する場合、つまり数値の型を変える場合は従来通りC〜を使用します。
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
Dim b As Byte = 15
Dim i As Integer = 7
Dim l As Long = 2

b = CByte(i) ' b = 7
i = CInt(l) ' i = 2
l = CLng(b) ' l = 7

Dim s As Single
Dim d As Double

s = CSng(l) ' s = 7.0
d = CDbl(s) ' d = 7.0

bln = CBool(s = 7.0) ' bln = True
 浮動小数点値から整数値に変えるには、CInt()などを使う方法もありますが、丸め方法を指定して整数値に変える必要がある場合はMath.Round()メソッドなどを使用する必要があります。 詳しくは「算術演算 小数点の丸め」の項を参考にしてください。

数値→文字列変換

 数値から文字列へ変換する場合には、CStr関数を使用することができます。
001
002
003
004
005
006
Dim str As String

Dim i As Integer = 15

str = CStr(i) ' str = "15"
str = CStr(3.14) ' str = "3.14"
 これに加え、VB.NETではToString()メソッドを使用することができます。 上のコードと等価なコードをToString()を用いて記述した例を示します。
001
002
003
004
005
006
Dim str As String

Dim i As Integer = 15

str = i.ToString() ' str = "15"
str = (3.14).ToString() ' str = "3.14"
 このように、数値リテラルを括弧でくくることで直接ToString()メソッドを使用することもできます。 これだけだとあまりToString()メソッドのメリットを感じないかもしれませんが、ToString()を用いると文字列化する際に書式を指定できるという利点があります。
001
002
003
004
005
006
007
008
009
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十進数として表記する。 整数に対して使用する。
X十六進数として表記する。 整数に対して使用する。
E実数値に対して、指数表記にする。
F実数値に対して、固定小数点表記にする。
G実数値に対して、固定小数点または指数のいずれか簡潔な方の表記にする。
N三桁ことに区切り文字(カンマ)をつけて表記する。
Pパーセントとして表記する。
 これらの書式指定文字に加え数値を指定することで表記の桁数などを指定できます。

文字列→数値変換

 文字列から数値へ変換する場合には、C〜を使用することができます。
001
002
003
004
005
Dim i As Integer
Dim s As Single

i = CInt("15") ' i = 15
s = CSng("3.14") ' s = 3.14
 この方法のほかにも、VB.NETではParse()メソッドを使用することができます。
001
002
003
004
005
Dim i As Integer
Dim s As Single

i = Integer.Parse("15")  ' i = 15
s = Single.Parse("3.14") ' s = 3.14
 これらのいずれの方法を使用しても適切に変換されます。 また、次のような複雑な表記の数値も正しく変換されます。
001
002
003
004
005
006
007
008
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列挙型を参照してください。