Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Single.ToString() 메서드 완벽 가이드: float 값을 문자열로 변환하는 방법

개요

C#의 Single.ToString() 메서드는 float(Single) 형식 인스턴스가 지닌 숫자 값을 그에 대응하는 문자열 표현으로 변환합니다. 숫자를 콘솔에 출력하거나, 로그를 기록하거나, 다른 문자열과 연결해야 할 때 가장 기본적으로 사용되는 메서드입니다.

구문

메서드의 기본 구문은 다음과 같습니다.

public override string ToString ();

이 메서드는 매개변수를 받지 않으며, 현재 인스턴스의 값을 나타내는 문자열을 반환합니다. 특수한 부동 소수점 값은 다음과 같이 변환됩니다.

  • 양의 무한대(+∞) → "∞"
  • 음의 무한대(-∞) → "-∞"
  • NaN(숫자 아님) → "NaN"

예제 1: 무한대 값과 일반 값 변환

아래 예제에서는 0으로 나누어 발생한 양의 무한대 값과 일반적인 음수 값에 대해 ToString() 메서드를 호출한 결과를 확인합니다.

using System;
public class Demo {
   public static void Main(){
      float f1 = 10.0f/0.0f;
      float f2 = -3.0f;
      Console.WriteLine("값1(문자열 표현) = "+f1.ToString());
      Console.WriteLine("값1의 해시 코드 = "+f1.GetHashCode());
      Console.WriteLine("값1의 TypeCode = "+f1.GetTypeCode());
      Console.WriteLine("값1이 양수 또는 음수 무한대인가? = "+Single.IsInfinity(f1));
      Console.WriteLine("값1이 NaN인가? = "+Single.IsNaN(f1));
      Console.WriteLine("값1이 양의 무한대인가? = "+Single.IsPositiveInfinity(f1));
      Console.WriteLine("\n값2(문자열 표현) = "+f2.ToString());
      Console.WriteLine("값2의 해시 코드 = "+f2.GetHashCode());
      Console.WriteLine("값2의 TypeCode = "+f2.GetTypeCode());
      Console.WriteLine("값2가 양수 또는 음수 무한대인가? = "+Single.IsInfinity(f2));
      Console.WriteLine("값2가 NaN인가? = "+Single.IsNaN(f2));
      Console.WriteLine("값2가 양의 무한대인가? = "+Single.IsPositiveInfinity(f2));
  }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

값1(문자열 표현) = ∞
값1의 해시 코드 = 2139095040
값1의 TypeCode = Single
값1이 양수 또는 음수 무한대인가? = True
값1이 NaN인가? = False
값1이 양의 무한대인가? = True
값2(문자열 표현) = -3
값2의 해시 코드 = -1069547520
값2의 TypeCode = Single
값2가 양수 또는 음수 무한대인가? = False
값2가 NaN인가? = False
값2가 양의 무한대인가? = False

10.0f / 0.0f처럼 부동 소수점 수를 0으로 나누면 정수형과 달리 예외가 발생하지 않고 양의 무한대(∞)가 됩니다. 따라서 f1.ToString()의 결과는 "∞"로 출력됩니다.

예제 2: NaN(숫자 아님) 값 처리

이번에는 양의 무한대와 NaN(Not a Number) 값을 함께 살펴보겠습니다. 0.0f / 0.0f의 결과는 NaN이 되며, ToString()은 이를 "NaN" 문자열로 반환합니다.

using System;
public class Demo {
   public static void Main(){
      float f1 = 5.0f/0.0f;
      float f2 = 0.0f/0.0f;
      Console.WriteLine("값1(문자열 표현) = "+f1.ToString());
      Console.WriteLine("값1의 해시 코드 = "+f1.GetHashCode());
      Console.WriteLine("값1의 TypeCode = "+f1.GetTypeCode());
      Console.WriteLine("값1이 양수 또는 음수 무한대인가? = "+Single.IsInfinity(f1));
      Console.WriteLine("값1이 NaN인가? = "+Single.IsNaN(f1));
      Console.WriteLine("값1이 음의 무한대인가? = "+Single.IsNegativeInfinity(f1));
      Console.WriteLine("\n값2(문자열 표현) = "+f2.ToString());
      Console.WriteLine("값2의 해시 코드 = "+f2.GetHashCode());
      Console.WriteLine("값2의 TypeCode = "+f2.GetTypeCode());
      Console.WriteLine("값2가 양수 또는 음수 무한대인가? = "+Single.IsInfinity(f2));
      Console.WriteLine("값2가 NaN인가? = "+Single.IsNaN(f2));
      Console.WriteLine("값2가 음의 무한대인가? = "+Single.IsNegativeInfinity(f2));
  }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

값1(문자열 표현) = ∞
값1의 해시 코드 = 2139095040
값1의 TypeCode = Single
값1이 양수 또는 음수 무한대인가? = True
값1이 NaN인가? = False
값1이 음의 무한대인가? = False
값2(문자열 표현) = NaN
값2의 해시 코드 = -4194304
값2의 TypeCode = Single
값2가 양수 또는 음수 무한대인가? = False
값2가 NaN인가? = True
값2가 음의 무한대인가? = False

핵심 정리

  • Single.ToString()은 매개변수 없이 호출하며, 현재 float 값을 문자열로 반환합니다.
  • 부동 소수점 나눗셈에서 0으로 나누면 예외가 발생하지 않고 ±∞ 또는 NaN이 됩니다.
  • ToString()은 무한대를 "∞" 또는 "-∞"로, NaN을 "NaN"으로 각각 변환합니다.
  • Single.IsInfinity(), IsPositiveInfinity(), IsNegativeInfinity(), IsNaN() 같은 정적 메서드로 특수 값을 손쉽게 판별할 수 있습니다.
  • GetHashCode()는 값의 해시 코드를, GetTypeCode()는 TypeCode.Single을 반환합니다.