C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のSingle.ToStringメソッドの使い方を徹底解説!数値を文字列に変換する方法

C#におけるSingle.ToString()メソッドは、Single型(float型)インスタンスが保持する数値を、それと等価な文字列表現へ変換するために使用されます。浮動小数点数を画面に表示したり、ログに出力したり、文字列として扱いたい場面で頻繁に活用される基本的なメソッドです。

構文

Single.ToString()メソッドの構文は以下のとおりです。

public override string ToString();

このメソッドは引数を受け取らず、現在のインスタンスの数値を表す文字列(string)を返します。Objectクラスからオーバーライドされたメソッドである点にも注目してください。

サンプルコード1:正の無限大と負の値の場合

まず、無限大(Infinity)となる値と通常の負の値を変換する例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        float f1 = 10.0f/0.0f;
        float f2 = -3.0f;
        Console.WriteLine("Value1 (String representation) = "+f1.ToString());
        Console.WriteLine("Hashcode for Value1 = "+f1.GetHashCode());
        Console.WriteLine("TypeCode for Value1 = "+f1.GetTypeCode());
        Console.WriteLine("Is Value1 value is positive or negative infinity? = "+Single.IsInfinity(f1));
        Console.WriteLine("Is Value1 NaN? = "+Single.IsNaN(f1));
        Console.WriteLine("Is Value1 a positive infinity? = "+Single.IsPositiveInfinity(f1));
        Console.WriteLine("\nValue2 (String representation) = "+f2.ToString());
        Console.WriteLine("Hashcode for Value2 = "+f2.GetHashCode());
        Console.WriteLine("TypeCode for Value2 = "+f2.GetTypeCode());
        Console.WriteLine("Is Value2 value is positive or negative infinity? = "+Single.IsInfinity(f2));
        Console.WriteLine("Is Value2 NaN? = "+Single.IsNaN(f2));
        Console.WriteLine("Is Value2 a positive infinity? = "+Single.IsPositiveInfinity(f2));
    }
}

実行結果

上記のコードを実行すると、以下のような出力が得られます。

Value1 (String representation) = ∞
Hashcode for Value1 = 2139095040
TypeCode for Value1 = Single
Is Value1 value is positive or negative infinity? = True
Is Value1 NaN? = False
Is Value1 a positive infinity? = True
Value2 (String representation) = -3
Hashcode for Value2 = -1069547520
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = False
Is Value2 NaN? = False
Is Value2 a positive infinity? = False

この例では、10.0f/0.0fのようにゼロで除算すると結果が正の無限大(∞)になり、ToString()メソッドはそれを「∞」という文字列として返します。一方、-3.0fのような通常の値は「-3」という文字列に変換されます。

サンプルコード2:無限大とNaNの場合

次に、正の無限大と非数(NaN:Not a Number)を含む例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        float f1 = 5.0f/0.0f;
        float f2 = 0.0f/0.0f;
        Console.WriteLine("Value1 (String representation) = "+f1.ToString());
        Console.WriteLine("Hashcode for Value1 = "+f1.GetHashCode());
        Console.WriteLine("TypeCode for Value1 = "+f1.GetTypeCode());
        Console.WriteLine("Is Value1 value is positive or negative infinity? = "+Single.IsInfinity(f1));
        Console.WriteLine("Is Value1 NaN? = "+Single.IsNaN(f1));
        Console.WriteLine("Is Value1 a negative infinity? = "+Single.IsNegativeInfinity(f1));
        Console.WriteLine("\nValue2 (String representation) = "+f2.ToString());
        Console.WriteLine("Hashcode for Value2 = "+f2.GetHashCode());
        Console.WriteLine("TypeCode for Value2 = "+f2.GetTypeCode());
        Console.WriteLine("Is Value2 value is positive or negative infinity? = "+Single.IsInfinity(f2));
        Console.WriteLine("Is Value2 NaN? = "+Single.IsNaN(f2));
        Console.WriteLine("Is Value2 a negative infinity? = "+Single.IsNegativeInfinity(f2));
    }
}

実行結果

このコードを実行すると、以下の出力が得られます。

Value1 (String representation) = ∞
Hashcode for Value1 = 2139095040
TypeCode for Value1 = Single
Is Value1 value is positive or negative infinity? = True
Is Value1 NaN? = False
Is Value1 a negative infinity? = False
Value2 (String representation) = NaN
Hashcode for Value2 = -4194304
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = False
Is Value2 NaN? = True
Is Value2 a negative infinity? = False

ポイントまとめ

  • ゼロ除算の扱い: 正の値を0で割ると正の無限大(∞)、負の値を0で割ると負の無限大(-∞)になります。
  • NaN(非数): 0.0f/0.0fのように不定となる演算の結果はNaNとなり、ToString()メソッドは「NaN」という文字列を返します。
  • 判定用メソッド: Single構造体には、Single.IsInfinity()Single.IsPositiveInfinity()Single.IsNegativeInfinity()Single.IsNaN()といった便利な静的メソッドが用意されており、特殊な値かどうかを簡単に判定できます。
  • GetHashCode()とGetTypeCode(): GetHashCode()はインスタンスのハッシュコードを、GetTypeCode()はTypeCode列挙体(ここではSingle)を返します。

このように、Single.ToString()メソッドを使えば、float型の値をそのまま文字列として取得できます。特別な書式指定が必要ない場合に手軽に利用できるため、デバッグや簡単な表示処理において非常に有用です。より詳細な書式制御が必要な場合は、書式指定子を引数に取るToString(string format)やToString(string format, IFormatProvider provider)などのオーバーロードも活用するとよいでしょう。

  1. 【初心者向け】JavaScriptのRegExp toString()メソッドで正規表現を文字列として取得する方法

    RegExp toString()メソッドとは JavaScriptのRegExp toString()メソッドは、正規表現オブジェクト(RegExpオブジェクト)の文字列値を返すためのメソッドです。このメソッドを呼び出すと、パターンとフラグを含んだ正規表現リテラル形式(例: /fox/g)の文字列が取得できます。 デバッグ時や、正規表現の内容を画面に表示して確認したい場合などに便利なメソッドです。 以下は、RegExp toString()メソッドを使用した具体的なコード例です。 サンプルコード <!DOCTYPE html> <html lang="ja&qu

  2. C#の列挙型ToString()メソッドの使い方を解説

    C#におけるToString()メソッドは、列挙型(enum)インスタンスの値を対応する文字列表現に変換するためのメソッドです。この記事では、基本的な使い方から書式指定子を使った応用例まで、サンプルコードとともに解説します。列挙型の定義まずは、例として車両を表す列挙型を定義します。enum Vehicle { Car, Bus, Truck, Motobike };ToString()メソッドで文字列に変換する列挙型の値を文字列表現に変換するには、ToString()メソッドを使用します。Vehicle.Car.ToString(d)ここで引数に指定しているdは書式指定子です。dまたはDを指定