トップC# > 数値と文字列

数値と文字列

1.文字列を数値(整数)に変換する

    int num1 = int.Parse("123456789");
    int num2 = int.Parse("123,456,789", NumberStyles.AllowThousands);
    int num3 = int.Parse("123e4", NumberStyles.AllowExponent);
    int num4 = int.Parse("5ef2", NumberStyles.HexNumber);	// 前後に空白文字があってもよい

    int num5 = Convert.ToInt32("123456789");
    int num6 = Convert.ToInt32("5ef2", 16);

C# の int型は符号付き 32ビット整数、long型は符号付き 64ビット整数である。

一事例では16進については Convertの方がわずかに速かった。たまたまかもしれない。

2.文字列を数値(実数)に変換する

    double num1 = double.Parse("1234.5678");
    double num2 = Convert.ToDouble("1234.5678");

3.数値を文字列に変換する

    string str1 = Convert.ToString(13456789);
    string str2 = Convert.ToString(1234.5678);
    int num = 123;
    string str3 = num.ToString();       // 123
    string str4 = num.ToString("x2");   // 7b   16進(0-9,a-f)2桁
    string str5 = num.ToString("X3");   // 07B  16進(0-9,A-F)3桁

3.数値を書式を指定して文字列に変換する

    double num = 3.14156;
    string str = num.ToString("f2");    // 3.14

"f2"の場合、正の数には "+" が付かない。正の数には "+" を付けるには、次のようにする。

正の数、負の数、ゼロの順に書式を指定する。

    double num = 3.14156;
    string str = num.ToString("+#0.00;-#0.00;0");    // +3.14

数値 n = 1, 2, ... , 10 を "01", "02", ... "10" のように変換するには n.ToString("d2") とする。

数値が二つ以上の場合には、String.Formatメソッドを使用する。

   string str1 = String.Format("A: {0:f1}, B: {1:f2}, C: {0:f0}", 3.1415, 123.456, 123);   // "A: 3.1, B: 123.45, C: 3" 
   string str2 = string.Format("A:{0,4}, B:{1,-4}, C: {2:x}", 12, 34, 123);                // "A:  12, B:34  , C: 7b"

str2のように、桁数の前に '-' を付けると左寄せとなる。この符号がないときは右寄せとなる。

A.リファレンス

[1] 文字列を数値に変換するには?[C#、VB]