書式指定子を用いた数値のフォーマット指定

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

 数値型のToString()メソッドを呼び出す際に、数値の書式を指定して文字列化することができる。 また、Console.WriteLine()メソッドなどでもこの書式指定子を指定することができる。
VB.NET
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
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

 さらに、通貨など文化や言語などに依存する表記の場合はカルチャを指定することもできる。
VB.NET
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
Imports System.Globalization

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim output As String

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

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

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

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

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

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

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

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

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

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

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

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

        textBoxOutput.Text = output

    End Sub

End Class
実行結果
実行結果