Double.TryParse Method

Definition

숫자의 문자열 표현을 같은 값의 배정밀도 부동 소수점 숫자로 변환합니다.Converts the string representation of a number to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

Overloads

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double)

지정된 스타일 및 문화권별 형식으로 된 숫자의 문자열 표현을포함하는 문자 범위를 해당하는 배정밀도 부동 소수점 숫자로 변환합니다.Converts a character span containing the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

TryParse(String, Double)

숫자의 문자열 표현을 같은 값의 배정밀도 부동 소수점 숫자로 변환합니다.Converts the string representation of a number to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

TryParse(ReadOnlySpan<Char>, Double)

지정된 스타일 및 문화권별 형식으로 된 숫자의 문자열 표현을 포함하는 문자 범위를 해당하는 배정밀도 부동 소수점 숫자로 변환합니다.Converts the span representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

TryParse(String, NumberStyles, IFormatProvider, Double)

지정된 스타일 및 문화권별 형식의 숫자에 대한 문자열 표현을 같은 값의 배정밀도 부동 소수점 숫자로 변환합니다.Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

Remarks

.NET Core 3.0 이상에서 나타낼 수 없는 값이 너무 크면 IEEE 754 사양에서 요구 하는 PositiveInfinity 또는 NegativeInfinity로 반올림 됩니다.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. .NET Framework를 포함 하 여 이전 버전에서 너무 커서 표현할 수 없는 값을 구문 분석 하면 오류가 발생 했습니다.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double)

지정된 스타일 및 문화권별 형식으로 된 숫자의 문자열 표현을포함하는 문자 범위를 해당하는 배정밀도 부동 소수점 숫자로 변환합니다.Converts a character span containing the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out double result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * double -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Double) As Boolean

Parameters

s
ReadOnlySpan<Char>

변환할 숫자를 포함하는 읽기 전용 문자 범위입니다.A read-only character span that contains the number to convert.

style
NumberStyles

NumberStyles에 사용할 수 있는 형식을 나타내는 s 값의 비트 조합입니다.A bitwise combination of NumberStyles values that indicates the permitted format of s. 지정할 일반적인 값은 AllowThousands와 결합되는 Float입니다.A typical value to specify is Float combined with AllowThousands.

provider
IFormatProvider

s에 대한 문화권별 형식 지정 정보를 제공하는 개체입니다.An object that supplies culture-specific formatting information about s.

result
Double

이 메서드가 반환되고 변환에 성공할 경우, s에 포함된 숫자 값이나 기호에 해당하는 배정밀도 부동 소수점 숫자를 포함합니다.When this method returns and if the conversion succeeded, contains a double-precision floating-point number equivalent of the numeric value or symbol contained in s. 변환에 실패할 경우 0을 포함합니다.Contains zero if the conversion failed. s 매개 변수가 null이거나, 빈 문자 범위 또는 style 규격 형식을 따르지 아니하는 숫자일 경우, 변환에 실패합니다.The conversion fails if the s parameter is null, an empty character span, or not a number in a format compliant with style. s이(가) MinValue보다 작은 유효한 숫자인 경우, result은(는) NegativeInfinity입니다.If s is a valid number less than MinValue, result is NegativeInfinity. sMaxValue보다 큰 유효한 숫자인 경우, resultPositiveInfinity입니다.If s is a valid number greater than MaxValue, result is PositiveInfinity. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다. 원래 result에 제공된 모든 값을 덮어쓰게 됩니다.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Returns

Boolean

true가 성공적으로 변환되었으면 s이고, 그렇지 않으면 false입니다.true if s was converted successfully; otherwise, false.

Remarks

.NET Core 3.0 이상에서 나타낼 수 없는 값이 너무 크면 IEEE 754 사양에서 요구 하는 PositiveInfinity 또는 NegativeInfinity로 반올림 됩니다.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. .NET Framework를 포함 하 여 이전 버전에서 너무 커서 표현할 수 없는 값을 구문 분석 하면 오류가 발생 했습니다.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

TryParse(String, Double)

숫자의 문자열 표현을 같은 값의 배정밀도 부동 소수점 숫자로 변환합니다.Converts the string representation of a number to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] double % result);
public static bool TryParse (string s, out double result);
static member TryParse : string * double -> bool
Public Shared Function TryParse (s As String, ByRef result As Double) As Boolean

Parameters

s
String

변환할 숫자가 포함된 문자열입니다.A string containing a number to convert.

result
Double

이 메서드는 변환이 성공한 경우 s 매개 변수의 배정밀도 부동 소수점 숫자를 반환하고 변환이 실패한 경우 0을 반환합니다.When this method returns, contains the double-precision floating-point number equivalent of the s parameter, if the conversion succeeded, or zero if the conversion failed. s 매개 변수가 null 또는 Empty이거나 유효한 형식의 숫자가 아닌 경우, 변환에 실패합니다.The conversion fails if the s parameter is null or Empty or is not a number in a valid format. .NET Framework 및 .NET Core 2.2 이하 버전에서 s이(가) MinValue보다 작거나 MaxValue보다 큰 숫자를 나타낼 경우에도 변환에 실패합니다.It also fails on .NET Framework and .NET Core 2.2 and earlier versions if s represents a number less than MinValue or greater than MaxValue. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다. 원래 result에 제공된 모든 값을 덮어쓰게 됩니다.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Returns

Boolean

true가 성공적으로 변환되었으면 s이고, 그렇지 않으면 false입니다.true if s was converted successfully; otherwise, false.

Examples

다음 예제에서는 TryParse(String, Double) 메서드를 사용 하 여 숫자 값의 문자열 표현을 Double 값으로 변환 합니다.The following example uses the TryParse(String, Double) method to convert the string representations of numeric values to Double values. 해당 EN-US가 현재 문화권이 가정 합니다.It assumes that en-US is the current culture.

using System;

public class Example
{
   public static void Main()
   {
      string[] values = { "1,643.57", "$1,643.57", "-1.643e6",
                          "-168934617882109132", "123AE6",
                          null, String.Empty, "ABCDEF" };
      double number;

      foreach (var value in values) {
         if (Double.TryParse(value, out number))
            Console.WriteLine("'{0}' --> {1}", value, number);
         else
            Console.WriteLine("Unable to parse '{0}'.", value);
      }
   }
}
// The example displays the following output:
//       '1,643.57' --> 1643.57
//       Unable to parse '$1,643.57'.
//       '-1.643e6' --> -1643000
//       '-168934617882109132' --> -1.68934617882109E+17
//       Unable to parse '123AE6'.
//       Unable to parse ''.
//       Unable to parse ''.
//       Unable to parse 'ABCDEF'.
Module Example
   Public Sub Main()
      Dim values() As String = { "1,643.57", "$1,643.57", "-1.643e6", 
                                "-168934617882109132", "123AE6", 
                                Nothing, String.Empty, "ABCDEF" }
      Dim number As Double
      
      For Each value In values
         If Double.TryParse(value, number) Then
            Console.WriteLine("'{0}' --> {1}", value, number)
         Else
            Console.WriteLine("Unable to parse '{0}'.", value)      
         End If   
      Next   
   End Sub
End Module
' The example displays the following output:
'       '1,643.57' --> 1643.57
'       Unable to parse '$1,643.57'.
'       '-1.643e6' --> -1643000
'       '-168934617882109132' --> -1.68934617882109E+17
'       Unable to parse '123AE6'.
'       Unable to parse ''.
'       Unable to parse ''.
'       Unable to parse 'ABCDEF'.

Remarks

.NET Core 3.0 이상에서 나타낼 수 없는 값이 너무 크면 IEEE 754 사양에서 요구 하는 PositiveInfinity 또는 NegativeInfinity로 반올림 됩니다.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. .NET Framework를 포함 하 여 이전 버전에서 너무 커서 표현할 수 없는 값을 구문 분석 하면 오류가 발생 했습니다.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

이 오버 로드는 구문 분석 된 숫자 값을 반환 하는 대신 구문 분석 작업이 성공 했는지 여부를 나타내는 부울 값을 반환 하 여 Double.Parse(String) 메서드와 다릅니다.This overload differs from the Double.Parse(String) method by returning a Boolean value that indicates whether the parse operation succeeded instead of returning the parsed numeric value. s 잘못 되어 구문 분석 될 수 없는 경우 예외 처리를 사용 하 여 FormatException를 테스트할 필요가 없습니다.It eliminates the need to use exception handling to test for a FormatException in the event that s is invalid and cannot be successfully parsed.

s 매개 변수는 현재 문화권의 NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, NumberFormatInfo.NaNSymbol (문자열 비교는 대/소문자 구분) 또는 형식의 문자열을 포함할 수 있습니다.The s parameter can contain the current culture's NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, NumberFormatInfo.NaNSymbol (the string comparison is case-sensitive), or a string of the form:

[ws][sign][integral-digits,]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws][ws][sign][integral-digits,]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]

대괄호 안의 요소는 선택 사항입니다.Elements in square brackets are optional. 다음 표에서는 각 요소에 대해 설명합니다.The following table describes each element.

요소Element 설명Description
wsws 일련의 공백 문자입니다.A series of white-space characters.
signsign 음수 기호 또는 양수 부호 기호입니다.A negative sign or positive sign symbol.
정수 자릿수integral-digits 일련의 숫자 0에서 하는 9 사이의 숫자의 정수 부분을 지정 합니다.A series of numeric characters ranging from 0 to 9 that specify the integral part of the number. 정수 계열 숫자 수 없어야 경우 소수 자릿수입니다.Integral-digits can be absent if there are fractional-digits.
,, Culture 별 그룹 구분 기호입니다.A culture-specific group separator symbol.
.. Culture 별 소수점 기호입니다.A culture-specific decimal point symbol.
소수 자릿수fractional-digits 일련의 숫자 0에서 하는 9 사이의 숫자의 소수 부분을 지정 합니다.A series of numeric characters ranging from 0 to 9 that specify the fractional part of the number.
EE 대 / 소문자 구분 문자가 'e'를 지 수 (과학적 표기법) 표기법을 나타냅니다.An uppercase or lowercase character 'e', that indicates exponential (scientific) notation.
지 수-자릿수exponential-digits 일련의 0에서 9 지 수를 지정 하는 위치 까지의 숫자입니다.A series of numeric characters ranging from 0 to 9 that specify an exponent.

숫자 형식에 대 한 자세한 내용은 형식 서식 지정을 참조 하세요.For more information about numeric formats, see Formatting Types.

s 매개 변수는 NumberStyles.FloatNumberStyles.AllowThousands 플래그의 조합을 사용 하 여 해석 됩니다.The s parameter is interpreted by using a combination of the NumberStyles.Float and NumberStyles.AllowThousands flags. 즉, 공백이 고 천 단위 구분 기호는 사용할 수 있지만 통화 기호는 없습니다.This means that white space and thousands separators are allowed but currency symbols are not. s에 나타날 수 있는 요소 (예: 통화 기호, 천 단위 구분 기호 및 공백)를 명시적으로 정의 하려면 Double.TryParse(String, NumberStyles, IFormatProvider, Double) 메서드 오버 로드를 사용 합니다.To explicitly define the elements (such as currency symbols, thousands separators, and white space) that can be present in s, use the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method overload.

s 매개 변수는 현재 시스템 문화권에 대해 초기화 되는 NumberFormatInfo 개체의 서식 지정 정보를 사용 하 여 구문 분석 됩니다.The s parameter is parsed using the formatting information in a NumberFormatInfo object that is initialized for the current system culture. 자세한 내용은 NumberFormatInfo.CurrentInfo을 참조하세요.For more information, see NumberFormatInfo.CurrentInfo. 지정 된 다른 문화권의 서식 지정 정보를 사용 하 여 문자열을 구문 분석 하려면 Double.TryParse(String, NumberStyles, IFormatProvider, Double) 메서드 오버 로드를 사용 합니다.To parse a string using the formatting information of some other specified culture, use the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method overload.

일반적으로 Double.TryParse 메서드를 Double.ToString 메서드를 호출 하 여 만든 문자열에 전달 하는 경우 원래 Double 값이 반환 됩니다.Ordinarily, if you pass the Double.TryParse method a string that is created by calling the Double.ToString method, the original Double value is returned. 그러나 정밀도의 손실, 인해 값 아닐 같은 합니다.However, because of a loss of precision, the values may not be equal. 또한 Double.MinValue 또는 Double.MaxValue의 문자열 표현을 구문 분석 하려는 시도가 라운드트립 되지 않습니다.In addition, attempting to parse the string representation of either Double.MinValue or Double.MaxValue fails to round-trip. .NET Framework 및 .NET Core 2.2와 이전 버전에서는 OverflowException을 throw 합니다.On .NET Framework and .NET Core 2.2 and previous versions, it throws an OverflowException. .NET Core 3.0 이상 버전에서 MaxValue를 구문 분석 하려고 시도 하는 경우 MinValue 또는 Double.PositiveInfinity를 구문 분석 하려고 하면 Double.NegativeInfinity 반환 됩니다.On .NET Core 3.0 and later versions, it returns Double.NegativeInfinity if you attempt to parse MinValue or Double.PositiveInfinity if you attempt to parse MaxValue. 다음 예에서는 이러한 내용을 보여 줍니다.The following example provides an illustration.

using System;

public class Example
{
   public static void Main()
   {
      string value;
      double number;

      value = Double.MinValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);

      value = Double.MaxValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
Module Example
   Public Sub Main()
      Dim value As String
      Dim number As Double
      
      value = Double.MinValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
      
      value = Double.MaxValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
   End Sub
End Module
' The example displays the following output:
'    -1.79769313486232E+308 is outside the range of the Double type.
'    1.79769313486232E+308 is outside the range of the Double type.            

.NET Framework 및 .NET Core 2.2 이전 버전에서 s Double 데이터 형식의 범위를 벗어나는 경우 TryParse(String, Double) 메서드는 OverflowException을 throw 합니다.On .NET Framework and .NET Core 2.2 and earlier versions, if s is out of range of the Double data type, the TryParse(String, Double) method throws an OverflowException.

.NET Core 3.0 이상 버전에서는 s Double 데이터 형식의 범위를 벗어나면 예외가 throw 되지 않습니다.On .NET Core 3.0 and later versions, no exception is thrown when s is out of range of the Double data type. 대부분의 경우 TryParse(String, Double) 메서드는 Double.PositiveInfinity 또는 Double.NegativeInfinity결과를 계산 합니다.In most cases, the TryParse(String, Double) method calculates a result of Double.PositiveInfinity or Double.NegativeInfinity. 그러나 양수 또는 음의 무한대 보다 Double의 최대값 또는 최소값에 가까이 있는 것으로 간주 되는 작은 값 집합이 있습니다.However, there is a small set of values that are considered to be closer to the maximum or minimum values of Double than to positive or negative infinity. 이러한 경우 메서드는 Double.MaxValue 또는 Double.MinValue의 결과를 계산 합니다.In those cases, the method calculates a result of Double.MaxValue or Double.MinValue.

구문 분석 작업을 수행 하는 동안 s 매개 변수에 구분 기호가 있고 소수 및 그룹 구분 기호가 같으면 구문 분석 작업에서 구분 기호가 그룹 구분 기호가 아닌 소수 구분 기호로 간주 됩니다.If a separator is encountered in the s parameter during a parse operation, and the decimal and group separators are the same, the parse operation assumes that the separator is a decimal separator rather than a group separator. 구분 기호에 대 한 자세한 내용은 CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorNumberGroupSeparator를 참조 하세요.For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

See also

TryParse(ReadOnlySpan<Char>, Double)

지정된 스타일 및 문화권별 형식으로 된 숫자의 문자열 표현을 포함하는 문자 범위를 해당하는 배정밀도 부동 소수점 숫자로 변환합니다.Converts the span representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] double % result);
public static bool TryParse (ReadOnlySpan<char> s, out double result);
static member TryParse : ReadOnlySpan<char> * double -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Double) As Boolean

Parameters

s
ReadOnlySpan<Char>

변환할 숫자의 문자열 표현을 포함하는 문자 범위입니다.A character span that contains the string representation of the number to convert.

result
Double

이 메서드가 반환될 경우, 변환이 성공하면 s 매개 변수에 포함된 숫자 값이나 기호의 배정밀도 부동 소수점 숫자를 포함하고, 변환이 실패하면 0을 포함합니다.When this method returns, contains the double-precision floating-point number equivalent of the numeric value or symbol contained in s parameter, if the conversion succeeded, or zero if the conversion failed. s 매개 변수가 null이거나, 비어있거나, style의 규격 형식을 따르지 않을 경우, 변환에 실패합니다.The conversion fails if the s parameter is null or empty, or is not in a format compliant with style. style이(가) NumberStyles 열거 상수의 유효한 조합이 아닌 경우에도 변환에 실패합니다.The conversion also fails if style is not a valid combination of NumberStyles enumerated constants. s이(가) MinValue보다 작은 유효한 숫자인 경우, result은(는) NegativeInfinity입니다.If s is a valid number less than MinValue, result is NegativeInfinity. sMaxValue보다 큰 유효한 숫자인 경우, resultPositiveInfinity입니다.If s is a valid number greater than MaxValue, result is PositiveInfinity. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다. 원래 result에 제공된 모든 값을 덮어쓰게 됩니다.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Returns

Boolean

true가 성공적으로 변환되었으면 s이고, 그렇지 않으면 false입니다.true if s was converted successfully; otherwise, false.

Remarks

.NET Core 3.0 이상에서 나타낼 수 없는 값이 너무 크면 IEEE 754 사양에서 요구 하는 PositiveInfinity 또는 NegativeInfinity로 반올림 됩니다.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. .NET Framework를 포함 하 여 이전 버전에서 너무 커서 표현할 수 없는 값을 구문 분석 하면 오류가 발생 했습니다.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

TryParse(String, NumberStyles, IFormatProvider, Double)

지정된 스타일 및 문화권별 형식의 숫자에 대한 문자열 표현을 같은 값의 배정밀도 부동 소수점 숫자로 변환합니다.Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return value indicates whether the conversion succeeded or failed.

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result);
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out double result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * double -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Double) As Boolean

Parameters

s
String

변환할 숫자가 포함된 문자열입니다.A string containing a number to convert.

style
NumberStyles

NumberStyles에 사용할 수 있는 형식을 나타내는 s 값의 비트 조합입니다.A bitwise combination of NumberStyles values that indicates the permitted format of s. 지정할 일반적인 값은 AllowThousands와 결합되는 Float입니다.A typical value to specify is Float combined with AllowThousands.

provider
IFormatProvider

s에 대한 문화권별 서식 지정 정보를 제공하는 IFormatProvider입니다.An IFormatProvider that supplies culture-specific formatting information about s.

result
Double

이 메서드는 변환이 성공한 경우 s에 포함된 숫자 값이나 기호의 배정밀도 부동 소수점 숫자를 반환하며 변환이 실패한 경우 0을 반환합니다.When this method returns, contains a double-precision floating-point number equivalent of the numeric value or symbol contained in s, if the conversion succeeded, or zero if the conversion failed. s 매개 변수가 null 또는 Empty이거나, style의 규격 형식을 따르지 아니하거나, style이(가) NumberStyles 열거형 상수의 유효한 조합이 아닌 경우, 변환에 실패합니다.The conversion fails if the s parameter is null or Empty or is not in a format compliant with style, or if style is not a valid combination of NumberStyles enumeration constants. .NET Framework 또는 .NET Core 2.2 이하 버전에서 sMinValue보다 작거나 MaxValue보다 큰 숫자를 나타내는 경우에도 실패합니다.It also fails on .NET Framework or .NET Core 2.2 and earlier versions if s represents a number less than MinValue or greater than MaxValue. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다. 원래 result에 제공된 모든 값을 덮어쓰게 됩니다.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Returns

Boolean

true가 성공적으로 변환되었으면 s이고, 그렇지 않으면 false입니다.true if s was converted successfully; otherwise, false.

Exceptions

styleNumberStyles 값이 아닙니다.style is not a NumberStyles value.

-또는--or- styleAllowHexSpecifier 값이 포함되어 있습니다.style includes the AllowHexSpecifier value.

Examples

다음 예제에서는 Double.TryParse(String, NumberStyles, IFormatProvider, Double) 메서드를 사용 하 여 특정 스타일의 숫자에 대 한 문자열 표현을 구문 분석 하 고 특정 문화권의 규칙을 사용 하 여 서식을 지정 하는 방법을 보여 줍니다.The following example demonstrates the use of the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method to parse the string representation of numbers that have a particular style and are formatted using the conventions of a particular culture.

string value;
NumberStyles style;
CultureInfo culture;
double number;

// Parse currency value using en-GB culture.
value = "£1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Converted '£1,097.63' to 1097.63.

value = "1345,978";
style = NumberStyles.AllowDecimalPoint;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Converted '1345,978' to 1345.978.

value = "1.345,978";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
culture = CultureInfo.CreateSpecificCulture("es-ES");
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Converted '1.345,978' to 1345.978.

value = "1 345,978";
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Unable to convert '1 345,978'.
Dim value As String
Dim style As NumberStyles
Dim culture As CultureInfo
Dim number As Double

' Parse currency value using en-GB culture.
value = "£1,097.63"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
culture = CultureInfo.CreateSpecificCulture("en-GB")
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays: 
'       Converted '£1,097.63' to 1097.63.

value = "1345,978"
style = NumberStyles.AllowDecimalPoint
culture = CultureInfo.CreateSpecificCulture("fr-FR")
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays:
'       Converted '1345,978' to 1345.978.

value = "1.345,978"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
culture = CultureInfo.CreateSpecificCulture("es-ES")
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays: 
'       Converted '1.345,978' to 1345.978.

value = "1 345,978"
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays:
'       Unable to convert '1 345,978'.

Remarks

.NET Core 3.0 이상에서 나타낼 수 없는 값이 너무 크면 IEEE 754 사양에서 요구 하는 PositiveInfinity 또는 NegativeInfinity로 반올림 됩니다.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. .NET Framework를 포함 하 여 이전 버전에서 너무 커서 표현할 수 없는 값을 구문 분석 하면 오류가 발생 했습니다.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

TryParse 메서드는 변환에 실패할 경우 예외를 throw 하지 않는다는 점을 제외 하 고는 Parse(String, NumberStyles, IFormatProvider) 메서드와 비슷합니다.The TryParse method is like the Parse(String, NumberStyles, IFormatProvider) method, except this method does not throw an exception if the conversion fails. 변환이 성공 하면 반환 값이 true 되 고 result 매개 변수가 변환 결과로 설정 됩니다.If the conversion succeeds, the return value is true and the result parameter is set to the outcome of the conversion. 변환에 실패 하는 경우 반환 값은 false이 고 result 매개 변수는 0으로 설정 됩니다.If the conversion fails, the return value is false and the result parameter is set to zero. 이렇게 하면 s 유효 하지 않아 성공적으로 구문 분석할 수 없는 이벤트에서 FormatException를 테스트 하기 위해 예외 처리를 사용할 필요가 없습니다.This eliminates the need to use exception handling to test for a FormatException in the event that s is invalid and cannot be successfully parsed.

style 매개 변수는 구문 분석 작업이 성공 하기 위해 s 매개 변수의 허용 가능한 형식을 정의 합니다.The style parameter defines the allowable format of the s parameter for the parse operation to succeed. NumberStyles 열거형의 비트 플래그 조합 이어야 합니다.It must be a combination of bit flags from the NumberStyles enumeration. 다음 NumberStyles 멤버는 지원 되지 않습니다.The following NumberStyles members are not supported:

s 매개 변수는 provider에 표시 된 문화권에 대 한 NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol또는 NumberFormatInfo.NaNSymbol를 포함할 수 있습니다.The s parameter can contain NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, or NumberFormatInfo.NaNSymbol for the culture indicated by provider. 또한 style값에 따라 s 매개 변수에는 다음 요소가 포함 될 수 있습니다.In addition, depending on the value of style, the s parameter may include the following elements:

[ws] [$] [sign][integral-digits,]integral-digits[.fractional-digits][e[sign]exponential-digits][ws][ws] [$] [sign][integral-digits,]integral-digits[.fractional-digits][e[sign]exponential-digits][ws]

대괄호 ([ 및 ]) 안의 요소는 선택적 요소입니다.Elements in square brackets ([ and ]) are optional. 다음 표에서는 각 요소에 대해 설명합니다.The following table describes each element.

요소Element 설명Description
wsws 선택적 공백입니다.Optional white space. style NumberStyles.AllowLeadingWhite 플래그가 포함 된 경우 s 시작 부분에 공백이 표시 될 수 있습니다.White space can appear at the beginning of s if style includes the NumberStyles.AllowLeadingWhite flag. style NumberStyles.AllowTrailingWhite 플래그가 포함 된 경우 s 끝에 나타날 수 있습니다.It can appear at the end of s if style includes the NumberStyles.AllowTrailingWhite flag.
$ Culture 별 통화 기호입니다.A culture-specific currency symbol. 문자열에서의 해당 위치는 provider 매개 변수의 IFormatProvider.GetFormat 메서드에서 반환 되는 NumberFormatInfo 개체의 NumberFormatInfo.CurrencyNegativePattern 또는 NumberFormatInfo.CurrencyPositivePattern 속성으로 정의 됩니다.Its position in the string is defined by the NumberFormatInfo.CurrencyNegativePattern or NumberFormatInfo.CurrencyPositivePattern properties of the NumberFormatInfo object returned by the IFormatProvider.GetFormat method of the provider parameter. style NumberStyles.AllowCurrencySymbol 플래그가 포함 된 경우 통화 기호가 s 나타날 수 있습니다.The currency symbol can appear in s if style includes the NumberStyles.AllowCurrencySymbol flag.
signsign 가 선택적 부호입니다.An optional sign. 기호는 style NumberStyles.AllowLeadingSign 플래그가 포함 된 경우 s 시작 부분에 나타날 수 있으며 style 플래그가 포함 된 NumberStyles.AllowTrailingSign의 경우 s 끝에 표시 될 수 있습니다.The sign can appear at the beginning of s if style includes the NumberStyles.AllowLeadingSign flag, and it can appear at the end of s if style includes the NumberStyles.AllowTrailingSign flag. s에서 괄호를 사용 하 여 style NumberStyles.AllowParentheses 플래그가 포함 된 경우 음수 값을 나타낼 수 있습니다.Parentheses can be used in s to indicate a negative value if style includes the NumberStyles.AllowParentheses flag.
정수 자릿수integral-digits 일련의 0에서 숫자의 정수 부분을 지정 하는 9 까지의 숫자입니다.A series of digits ranging from 0 to 9 that specify the integral part of the number. 정수 계열 숫자 수 없어야 경우 소수 자릿수입니다.Integral-digits can be absent if there are fractional-digits.
,, 문화권별 천 단위 구분 기호입니다.A culture-specific thousands separator symbol. style NumberStyles.AllowThousands 플래그가 포함 된 경우 현재 문화권의 천 단위 구분 기호는 s에 나타날 수 있습니다.The current culture's thousands separator symbol can appear in s if style includes the NumberStyles.AllowThousands flag.
.. Culture 별 소수점 기호입니다.A culture-specific decimal point symbol. style NumberStyles.AllowDecimalPoint 플래그가 포함 된 경우 현재 문화권의 소수점 기호가 s 나타날 수 있습니다.The current culture's decimal point symbol can appear in s if style includes the NumberStyles.AllowDecimalPoint flag.
소수 자릿수fractional-digits 일련의 0에서 숫자의 소수 부분을 지정 하는 9 까지의 숫자입니다.A series of digits ranging from 0 to 9 that specify the fractional part of the number. styleNumberStyles.AllowDecimalPoint 플래그가 포함 되어 있으면 소수 자릿수가 s에 표시 될 수 있습니다.Fractional digits can appear in s if style includes the NumberStyles.AllowDecimalPoint flag.
ee s 지 수 표기법을 사용 하 여 숫자를 나타낼 수 있음을 나타내는 e 또는 E 문자입니다.The e or E character, which indicates that s can represent a number using exponential notation. Style에 NumberStyles.AllowExponent 플래그가 포함 된 경우 s 매개 변수는 지 수 표기법으로 숫자를 나타낼 수 있습니다.The s parameter can represent a number in exponential notation if style includes the NumberStyles.AllowExponent flag.
지 수-자릿수exponential-digits 일련의 0에서 지 수를 지정 하는 9 까지의 숫자입니다.A series of digits ranging from 0 to 9 that specify an exponent.

Note

s의 모든 종료 NUL (U + 0000) 문자는 style 인수의 값에 관계 없이 구문 분석 작업에서 무시 됩니다.Any terminating NUL (U+0000) characters in s are ignored by the parsing operation, regardless of the value of the style argument.

숫자만 포함 하는 문자열 (NumberStyles.None 스타일에 해당)은 Double 형식의 범위에 있는 경우에는 항상 성공적으로 구문 분석 합니다.A string with digits only (which corresponds to the NumberStyles.None style) always parses successfully if it is in the range of the Double type. 나머지 System.Globalization.NumberStyles 멤버는 입력 문자열에 있을 수 있지만 반드시 필요한 것은 아니지만 요소를 제어 합니다.The remaining System.Globalization.NumberStyles members control elements that may be but are not required to be present in the input string. 다음 표에서는 개별 NumberStyles 플래그가 s에 나타날 수 있는 요소에 미치는 영향을 보여 줍니다.The following table indicates how individual NumberStyles flags affect the elements that may be present in s.

NumberStyles 값NumberStyles value 숫자 외에도 s에 허용 되는 요소Elements permitted in s in addition to digits
None 정수 부분 숫자 요소만 있습니다.The integral-digits element only.
AllowDecimalPoint .The . 소수 자릿수 요소and fractional-digits elements.
AllowExponent s 매개 변수는 지 수 표기법을 사용할 수도 있습니다.The s parameter can also use exponential notation. 이 플래그는 자체적으로 정수-숫자E지 수 자릿수형식의 값을 지원 합니다. 양수 또는 음수 부호와 소수점 기호와 같은 요소를 사용 하 여 지 수 표기법으로 문자열을 성공적으로 구문 분석 하려면 추가 플래그가 필요 합니다.This flag by itself supports values in the form integral-digitsEexponential-digits; additional flags are needed to successfully parse strings in exponential notation with such elements as positive or negative signs and decimal point symbols.
AllowLeadingWhite s시작 부분에 있는 ws 요소입니다.The ws element at the beginning of s.
AllowTrailingWhite s끝에 있는 ws 요소입니다.The ws element at the end of s.
AllowLeadingSign s시작 부분에 있는 부호 요소입니다.The sign element at the beginning of s.
AllowTrailingSign s끝에 있는 부호 요소입니다.The sign element at the end of s.
AllowParentheses 괄호 형식의 부호 요소로, 숫자 값을 포함 합니다.The sign element in the form of parentheses enclosing the numeric value.
AllowThousands , 요소입니다.The , element.
AllowCurrencySymbol $ 요소입니다.The $ element.
Currency All.All. s 매개 변수는 지 수 표기법으로 16 진수 또는 숫자를 나타낼 수 없습니다.The s parameter cannot represent a hexadecimal number or a number in exponential notation.
Float s의 시작 또는 끝 부분에 있는 ws 요소 s시작 부분에 서명 합니다 .The ws element at the beginning or end of s, sign at the beginning of s, and the . 기호입니다.symbol. s 매개 변수는 지 수 표기법을 사용할 수도 있습니다.The s parameter can also use exponential notation.
Number ws, sign, 천 단위 구분 기호 (,) 및 소수점 (.) 요소입니다.The ws, sign, thousands separator (,), and decimal point (.) elements.
Any s 제외한 모든 스타일은 16 진수를 나타낼 수 없습니다.All styles, except s cannot represent a hexadecimal number.

provider 매개 변수는 NumberFormatInfo 또는 CultureInfo 개체와 같은 IFormatProvider 구현입니다.The provider parameter is a IFormatProvider implementation, such as a NumberFormatInfo or CultureInfo object. provider 매개 변수는 구문 분석에 사용 되는 문화권별 정보를 제공 합니다.The provider parameter supplies culture-specific information used in parsing. providernull 하거나 NumberFormatInfo 개체를 가져올 수 없는 경우 현재 문화권에 대 한 형식 정보가 사용 됩니다.If provider is null or a NumberFormatInfo object cannot be obtained, the format information for the current culture is used.

s 매개 변수가 null 이거나 숫자 값이 아니거나 provider 매개 변수가 NumberFormatInfo 개체를 생성 하지 않거나 style 열거형의 비트 플래그 조합이 아닌 경우 변환이 실패 합니다.NumberStylesThe conversion fails if the s parameter is null or not a numeric value, the provider parameter does not yield a NumberFormatInfo object, or the style parameter is not a combination of bit flags from the NumberStyles enumeration.

일반적으로 Double.TryParse 메서드를 Double.ToString 메서드를 호출 하 여 만든 문자열에 전달 하는 경우 원래 Double 값이 반환 됩니다.Ordinarily, if you pass the Double.TryParse method a string that is created by calling the Double.ToString method, the original Double value is returned. 그러나 정밀도의 손실, 인해 값 아닐 같은 합니다.However, because of a loss of precision, the values may not be equal. 또한 Double.MinValue 또는 Double.MaxValue의 문자열 표현을 구문 분석 하려는 시도가 라운드트립 되지 않습니다.In addition, attempting to parse the string representation of either Double.MinValue or Double.MaxValue fails to round-trip. .NET Framework 및 .NET Core 2.2와 이전 버전에서는 OverflowException을 throw 합니다.On .NET Framework and .NET Core 2.2 and previous versions, it throws an OverflowException. .NET Core 3.0 이상 버전에서 MaxValue를 구문 분석 하려고 시도 하는 경우 MinValue 또는 Double.PositiveInfinity를 구문 분석 하려고 하면 Double.NegativeInfinity 반환 됩니다.On .NET Core 3.0 and later versions, it returns Double.NegativeInfinity if you attempt to parse MinValue or Double.PositiveInfinity if you attempt to parse MaxValue. 다음 예에서는 이러한 내용을 보여 줍니다.The following example provides an illustration.

using System;

public class Example
{
   public static void Main()
   {
      string value;
      double number;

      value = Double.MinValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);

      value = Double.MaxValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
Module Example
   Public Sub Main()
      Dim value As String
      Dim number As Double
      
      value = Double.MinValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
      
      value = Double.MaxValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
   End Sub
End Module
' The example displays the following output:
'    -1.79769313486232E+308 is outside the range of the Double type.
'    1.79769313486232E+308 is outside the range of the Double type.            

.NET Framework 및 .NET Core 2.2 이전 버전에서 s Double 데이터 형식의 범위를 벗어나는 경우 Double.TryParse(String, NumberStyles, IFormatProvider, Double) 메서드는 OverflowException을 throw 합니다.On .NET Framework and .NET Core 2.2 and earlier versions, if s is out of range of the Double data type, the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method throws an OverflowException.

.NET Core 3.0 이상 버전에서는 s Double 데이터 형식의 범위를 벗어나면 예외가 throw 되지 않습니다.On .NET Core 3.0 and later versions, no exception is thrown when s is out of range of the Double data type. 대부분의 경우 Double.TryParse(String, NumberStyles, IFormatProvider, Double) 메서드는 Double.PositiveInfinity 또는 Double.NegativeInfinity결과를 계산 합니다.In most cases, the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method calculates a result of Double.PositiveInfinity or Double.NegativeInfinity. 그러나 양수 또는 음의 무한대 보다 Double의 최대값 또는 최소값에 가까이 있는 것으로 간주 되는 작은 값 집합이 있습니다.However, there is a small set of values that are considered to be closer to the maximum or minimum values of Double than to positive or negative infinity. 이러한 경우 메서드는 Double.MaxValue 또는 Double.MinValue의 결과를 계산 합니다.In those cases, the method calculates a result of Double.MaxValue or Double.MinValue.

구문 분석 작업을 수행 하는 동안 s 매개 변수에 구분 기호가 있고 적용 가능한 통화 또는 소수 자릿수와 그룹 구분 기호가 같으면 구문 분석 작업에서 구분 기호가 그룹 구분 기호가 아닌 소수 구분 기호로 간주 됩니다.If a separator is encountered in the s parameter during a parse operation, and the applicable currency or number decimal and group separators are the same, the parse operation assumes that the separator is a decimal separator rather than a group separator. 구분 기호에 대 한 자세한 내용은 CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorNumberGroupSeparator를 참조 하세요.For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

See also

Applies to