数値型のToString()メソッドを呼び出す際に、数値の書式を指定して文字列化することができる。 また、Console.WriteLine()メソッドなどでもこの書式指定子を指定することができる。

Sponsored Link

Imports System

Class SampleClass

    Public Shared Function Main(ByVal args() As String) As Integer

        ' 整数について
        Dim i As Integer = 123456

        Console.WriteLine("整数値に関する書式指定文字列とその出力例")
        Console.WriteLine("指定なし: " + i.ToString())

        ' 10進数
        Console.WriteLine("D : " + i.ToString("D"))
        Console.WriteLine("D8: " + i.ToString("D8"))

        ' 16進数 (大文字)
        Console.WriteLine("X : " + i.ToString("X"))
        Console.WriteLine("X8: " + i.ToString("X8"))

        ' 16進数 (小文字)
        Console.WriteLine("x : " + i.ToString("x"))
        Console.WriteLine("x8: " + i.ToString("x8"))


        ' 実数について
        Dim d1 As Double = 3.1416
        Dim d2 As Double = 123456.789

        Console.WriteLine()
        Console.WriteLine("実数値に関する書式指定文字列とその出力例")
        Console.WriteLine("指定なし: {0}, {1}", d1, d2)

        ' 指数
        Console.WriteLine("E : {0:E}, {1:E}", d1, d2)
        Console.WriteLine("E2: {0:E2}, {1:E2} ", d1, d2)
        Console.WriteLine("e4: {0:e4}, {1:e4} ", d1, d2)

        ' 固定小数点
        Console.WriteLine("F : {0:F}, {1:F} ", d1, d2)
        Console.WriteLine("F0: {0:F0}, {1:F0} ", d1, d2)
        Console.WriteLine("F4: {0:F4}, {1:F4} ", d1, d2)
        Console.WriteLine("F8: {0:F8}, {1:F8} ", d1, d2)

        ' 一般
        Console.WriteLine("G : {0:G}, {1:G} ", d1, d2)
        Console.WriteLine("G0: {0:G0}, {1:G0} ", d1, d2)
        Console.WriteLine("G2: {0:G2}, {1:G2} ", d1, d2)
        Console.WriteLine("G4: {0:G4}, {1:G4} ", d1, d2)

        ' 数値
        Console.WriteLine("N : {0:N}, {1:N} ", d1, d2)
        Console.WriteLine("N4: {0:N4}, {1:N4} ", d1, d2)

        ' パーセント
        Console.WriteLine("P : {0:P} {1:P}", 0.25, 0.125)

        Return 0

    End Function

End Class
実行結果
整数値に関する書式指定文字列とその出力例
指定なし: 123456
D : 123456
D8: 00123456
X : 1E240
X8: 0001E240
x : 1e240
x8: 0001e240

実数値に関する書式指定文字列とその出力例
指定なし: 3.1416, 123456.789
E : 3.141600E+000, 1.234568E+005
E2: 3.14E+000, 1.23E+005
e4: 3.1416e+000, 1.2346e+005
F : 3.14, 123456.79
F0: 3, 123457
F4: 3.1416, 123456.7890
F8: 3.14160000, 123456.78900000
G : 3.1416, 123456.789
G0: 3.1416, 123456.789
G2: 3.1, 1.2E+05
G4: 3.142, 1.235E+05
N : 3.14, 123,456.79
N4: 3.1416, 123,456.7890
P : 25.00% 12.50%
Press any key to continue

さらに、通貨など文化や言語などに依存する表記の場合はカルチャを指定することもできる。

Imports System
Imports System.Globalization

Class SampleClass

    Public Shared Function Main(ByVal args() As String) As Integer

        Dim output As String

        ' 通貨型の例
        Dim c1 As Decimal = 123456.789D
        Dim c2 As Decimal = 987654321D

        output = "通貨形式の出力例" + vbNewLine

        ' 現在のカルチャで出力(既定)
        Console.WriteLine(c1.ToString("C") + " " + c2.ToString("C") + " (" + CultureInfo.CurrentCulture.Name + ")")

        ' カルチャを指定した出力
        Dim culture As CultureInfo

        ' 米国
        culture = New CultureInfo("en-US")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        ' 英国
        culture = New CultureInfo("en-GB")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        ' フランス
        culture = New CultureInfo("fr-FR")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        ' ドイツ
        culture = New CultureInfo("de-DE")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        ' イタリア
        culture = New CultureInfo("it-IT")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        ' ロシア
        culture = New CultureInfo("ru-RU")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        ' 韓国
        culture = New CultureInfo("ko-KR")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        ' 中国
        culture = New CultureInfo("zh-CN")
        Console.WriteLine(culture.Name + ": " + c1.ToString("C", culture) + " " + c2.ToString("C", culture))

        Return 0

    End Function

End Class
実行結果
\123,457 \987,654,321 (ja-JP)
en-US: $123,456.79 $987,654,321.00
en-GB: £123,456.79 £987,654,321.00
fr-FR: 123 456,79 € 987 654 321,00 €
de-DE: 123.456,79 € 987.654.321,00 €
it-IT: € 123.456,79 € 987.654.321,00
ru-RU: 123 456,79р. 987 654 321,00р.
ko-KR: ₩123,457 ₩987,654,321
zh-CN: ¥123,456.79 ¥987,654,321.00