정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Decimal.Parse 메서드 (String, IFormatProvider)

2013-12-13

지정된 문화권별 서식 정보를 사용하여 숫자의 문자열 표현을 해당 Decimal로 변환합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public static decimal Parse(
	string s,
	IFormatProvider provider
)

매개 변수

s
형식: System.String
변환할 숫자의 문자열 표현입니다.
provider
형식: System.IFormatProvider
s에 대한 문화권별 구문 분석 정보를 제공하는 IFormatProvider입니다.

반환 값

형식: System.Decimal
provider로 지정된 s에 포함된 수와 값이 같은 Decimal 수입니다.

예외조건
ArgumentNullException

snull인 경우

FormatException

s의 형식이 잘못된 경우

OverflowException

sMinValue보다 작거나 MaxValue보다 큰 숫자를 나타내는 경우

Parse(String, IFormatProvider) 메서드의 오버로드는 일반적으로 다양한 방법으로 형식 지정될 수 있는 텍스트를 Decimal 값으로 변환하는 데 사용됩니다. 예를 들어 사용자가 HTML 텍스트 상자에 입력한 텍스트를 숫자 값으로 변환하는 데 사용할 수 있습니다.

s 매개 변수는 다음과 같은 형식의 숫자를 포함합니다.

[ws][sign][digits,]digits[.fractional-digits][ws]

대괄호([ 및 ])에 있는 요소는 선택적입니다. 다음 표에서는 각 요소에 대해 설명합니다.

요소

설명

ws

선택적 공백입니다.

sign

선택적 부호입니다.

digits

자릿수 시퀀스입니다(범위: 0~9).

,

문화권별 1000 단위 구분 기호입니다.

.

문화권별 소수점 기호입니다.

fractional-digits

자릿수 시퀀스입니다(범위: 0~9).

s 매개 변수는 NumberStyles.Number 스타일로 해석됩니다. 즉, 통화 기호는 허용되지 않지만 공백과 1000 단위 구분 기호는 허용됩니다. s에 나타날 수 있는 통화 기호, 1000 단위 구분 기호 및 공백 등의 요소를 명시적으로 정의하려면 Decimal.Parse(String, NumberStyles, IFormatProvider) 메서드를 사용합니다.

provider 매개 변수는 NumberFormatInfo 또는 CultureInfo 개체 등의 IFormatProvider 구현입니다. provider 매개 변수는 구문 분석에 사용된 문화권별 정보를 제공합니다. providernull이면 현재 스레드 문화권이 사용됩니다.

Decimal은 29자리의 정밀도를 가집니다. s가 29자리보다 큰 숫자로 나타나면서 소수점 자리를 가지고 MaxValueMinValue 범위 안에 있다면, 그 숫자는 잘리지 않고 가장 가까운 반올림을 사용해서 29자리로 반올림합니다.

구문 분석 작업 중 s 매개 변수에서 구분 기호가 발견되고 적용 가능한 통화 또는 숫자의 소수 및 그룹 구분 기호가 같으면, 구문 분석 작업에서 구분 기호는 그룹 구분 기호가 아니라 소수 구분 기호로 간주됩니다. 구분 기호에 대한 자세한 내용은 CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorNumberGroupSeparator를 참조하세요.

다음 예제에서는 Parse(String, IFormatProvider) 메서드를 사용하여 문자열을 구문 분석하는 방법을 보여 줍니다. 메서드는 먼저 현재 문화권을 사용하여 문자열 구문 분석을 시도합니다. 구문 분석 작업이 실패한 경우에는 중립 문화권을 사용하여 문자열 구문 분석을 시도합니다. 이 구문 분석 작업이 실패한 경우에는 고정 문화권을 사용하여 문자열 구문 분석을 시도합니다. 실제 응용프로그램에서는 Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) 메서드를 사용하는 것이 좋습니다.


public static decimal GetDecimal(string value)
{
   decimal number;
   CultureInfo culture = null;

   // Return if string is empty
   if (String.IsNullOrEmpty(value))
      throw new ArgumentNullException("The input string is invalid.");

   // Determine if value can be parsed using current culture.
   try
   {
      culture = CultureInfo.CurrentCulture;
      number = decimal.Parse(value, culture);
      return number;
   }
   catch {}
   // If Parse operation fails, see if there's a neutral culture.
   try {
      culture = culture.Parent;
      number = decimal.Parse(value, culture);
      return number;
   }   
   catch {}
   // If there is no neutral culture or if parse operation fails, use
   // the invariant culture.
   culture = CultureInfo.InvariantCulture;
   try {
      number = decimal.Parse(value, culture);
      return number;
   }
   // All attempts to parse the string have failed; rethrow the exception.
   catch (FormatException e)
   {
      throw new FormatException(String.Format("Unable to parse '{0}'.", value), 
                                e);
   }
}


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: