Double.TryParse Yöntem

Tanım

Bir sayının size gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.Converts the string representation of a number to its double-precision floating-point number equivalent. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.A return value indicates whether the conversion succeeded or failed.

Aşırı Yüklemeler

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

Belirtilen bir stil ve kültüre özgü biçimdeki bir sayının dize gösterimini içeren bir karakter yayılımını çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.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. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.A return value indicates whether the conversion succeeded or failed.

TryParse(String, Double)

Bir sayının size gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.Converts the string representation of a number to its double-precision floating-point number equivalent. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.A return value indicates whether the conversion succeeded or failed.

TryParse(ReadOnlySpan<Char>, Double)

Belirtilen bir stilin ve kültüre özgü biçimdeki bir sayının span gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.Converts the span representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.A return value indicates whether the conversion succeeded or failed.

TryParse(String, NumberStyles, IFormatProvider, Double)

Belirtilen bir stil ve kültüre özgü biçimdeki bir sayının dize gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.A return value indicates whether the conversion succeeded or failed.

Açıklamalar

.NET Core 3,0 ve üzeri sürümlerde, temsil edilecek çok büyük değerler PositiveInfinity NegativeInfinity IEEE 754 belirtimine göre veya gerektiği şekilde yuvarlanır.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. Önceki sürümlerde, .NET Framework dahil olmak üzere çok büyük bir değeri ayrıştırmak hataya neden oldu.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

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

Belirtilen bir stil ve kültüre özgü biçimdeki bir sayının dize gösterimini içeren bir karakter yayılımını çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.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. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.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);
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

Parametreler

s
ReadOnlySpan<Char>

Dönüştürülecek sayıyı içeren salt okunurdur bir karakter aralığı.A read-only character span that contains the number to convert.

style
NumberStyles

NumberStylesİzin verilen biçimini gösteren değerlerin bit tabanlı birleşimi s .A bitwise combination of NumberStyles values that indicates the permitted format of s. Belirtmek için tipik bir değer Float ile birleştirilir AllowThousands .A typical value to specify is Float combined with AllowThousands.

provider
IFormatProvider

Hakkında kültüre özgü biçimlendirme bilgileri sağlayan nesne s .An object that supplies culture-specific formatting information about s.

result
Double

Bu yöntem döndürüldüğünde ve dönüştürme başarılı olursa, ' de bulunan sayısal değer veya sembolün çift duyarlıklı kayan noktalı sayı eşdeğerini içerir 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. Dönüştürme başarısız olursa sıfır değerini içerir.Contains zero if the conversion failed. sParametre null , boş bir karakter aralığı ise ve ile uyumlu biçimdeki bir sayı değilse, dönüştürme başarısız olur style .The conversion fails if the s parameter is null, an empty character span, or not a number in a format compliant with style. sGeçerli bir sayı ise küçüktür MinValue result NegativeInfinity .If s is a valid number less than MinValue, result is NegativeInfinity. s, Değerinden büyük geçerli bir sayı ise MaxValue , result PositiveInfinity .If s is a valid number greater than MaxValue, result is PositiveInfinity. Bu parametre başlatılmamış olarak geçildi; Başlangıçta sağlanan değerin result üzerine yazılır.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Döndürülenler

Boolean

truesbaşarıyla dönüştürülürse; Aksi takdirde, false .true if s was converted successfully; otherwise, false.

Açıklamalar

.NET Core 3,0 ve üzeri sürümlerde, temsil edilecek çok büyük değerler PositiveInfinity NegativeInfinity IEEE 754 belirtimine göre veya gerektiği şekilde yuvarlanır.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. Önceki sürümlerde, .NET Framework dahil olmak üzere çok büyük bir değeri ayrıştırmak hataya neden oldu.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Şunlara uygulanır

TryParse(String, Double)

Bir sayının size gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.Converts the string representation of a number to its double-precision floating-point number equivalent. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.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);
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

Parametreler

s
String

Dönüştürülecek sayıyı içeren bir dize.A string containing a number to convert.

result
Double

Bu yöntem döndüğünde, dönüştürme başarılı olursa parametrenin çift duyarlıklı kayan noktalı sayı eşdeğerini s veya dönüştürme başarısız olursa sıfır değerini içerir.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. sParametresi null veya Empty geçerli bir biçimde bir sayı değilse, dönüştürme başarısız olur.The conversion fails if the s parameter is null or Empty or is not a number in a valid format. Ayrıca .NET Framework ve .NET Core 2,2 ve önceki sürümlerde de başarısız olur ve şundan daha s büyük bir sayıyı temsil eder 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. Bu parametre başlatılmamış olarak geçildi; Başlangıçta sağlanan değerin result üzerine yazılır.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Döndürülenler

Boolean

truesbaşarıyla dönüştürülürse; Aksi takdirde, false .true if s was converted successfully; otherwise, false.

Örnekler

Aşağıdaki örnek, TryParse(String, Double) sayısal değerlerin dize temsillerini değerlere dönüştürmek için yöntemini kullanır Double .The following example uses the TryParse(String, Double) method to convert the string representations of numeric values to Double values. En-US ' i geçerli kültür olduğunu varsayar.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'.

Açıklamalar

.NET Core 3,0 ve üzeri sürümlerde, temsil edilecek çok büyük değerler PositiveInfinity NegativeInfinity IEEE 754 belirtimine göre veya gerektiği şekilde yuvarlanır.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. Önceki sürümlerde, .NET Framework dahil olmak üzere çok büyük bir değeri ayrıştırmak hataya neden oldu.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Bu aşırı yükleme, Double.Parse(String) ayrıştırılmamış sayısal değeri döndürmek yerine ayrıştırma işleminin başarılı olup olmadığını gösteren bir Boole değeri döndürerek yönteminden farklıdır.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. Geçersiz bir olayda bir için test etmek üzere özel durum işlemenin kullanılması gereksinimini ortadan kaldırır FormatException s ve başarıyla ayrıştırılamaz.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.

sParametresi geçerli kültürün NumberFormatInfo.PositiveInfinitySymbol , NumberFormatInfo.NegativeInfinitySymbol , NumberFormatInfo.NaNSymbol (dize karşılaştırma büyük/küçük harfe duyarlı) veya formun bir dizesi içerebilir: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:

RW imzalayabilirsiniz [integral basamaklar,] integral rakamları [. [ kesirli basamaklar]] [e [imzala] üstel basamaklar] [ws][ws][sign][integral-digits,]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]

Köşeli parantezler içindeki öğeler isteğe bağlıdır.Elements in square brackets are optional. Aşağıdaki tablo her öğeyi açıklar.The following table describes each element.

ÖğeElement AçıklamaDescription
wsws Boşluk karakterlerinden oluşan bir dizi.A series of white-space characters.
signsign Eksi işareti ve artı işareti simgesi.A negative sign or positive sign symbol.
tamsayı basamaklarintegral-digits Sayının integral parçasını belirten, 0 ile 9 arasında bir dizi sayısal karakter.A series of numeric characters ranging from 0 to 9 that specify the integral part of the number. Kesirli basamaklar varsa tamsayı basamaklar bulunmayabilir.Integral-digits can be absent if there are fractional-digits.
,, Kültüre özgü bir grup ayırıcı simge.A culture-specific group separator symbol.
.. Bir kültüre özgü ondalık nokta sembolü.A culture-specific decimal point symbol.
kesirli basamaklarfractional-digits Sayının kesirli kısmını belirten, 0 ile 9 arasında bir dizi sayısal karakter.A series of numeric characters ranging from 0 to 9 that specify the fractional part of the number.
AE Üstel (bilimsel) gösterimi belirten büyük veya küçük harfli ' e ' karakteri.An uppercase or lowercase character 'e', that indicates exponential (scientific) notation.
üstel basamaklarexponential-digits Bir üs belirten, 0 ile 9 arasında bir dizi sayısal karakter.A series of numeric characters ranging from 0 to 9 that specify an exponent.

Sayısal biçimler hakkında daha fazla bilgi için bkz. biçimlendirme türleri.For more information about numeric formats, see Formatting Types.

sParametresi ve bayraklarının birleşimi kullanılarak yorumlanır NumberStyles.Float NumberStyles.AllowThousands .The s parameter is interpreted by using a combination of the NumberStyles.Float and NumberStyles.AllowThousands flags. Bu, boşluk ve binlik ayırıcılarına izin verildiği, ancak para birimi simgelerine izin verilmediği anlamına gelir.This means that white space and thousands separators are allowed but currency symbols are not. İçinde bulunabilecek öğeleri (para birimi sembolleri, binlerce ayırıcılar ve beyaz boşluk gibi) açıkça tanımlamak için s , Double.TryParse(String, NumberStyles, IFormatProvider, Double) yöntem aşırı yüklemesini kullanın.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.

sParametresi, NumberFormatInfo geçerli sistem kültürü için başlatılmış bir nesnedeki biçimlendirme bilgileri kullanılarak ayrıştırılır.The s parameter is parsed using the formatting information in a NumberFormatInfo object that is initialized for the current system culture. Daha fazla bilgi için bkz. NumberFormatInfo.CurrentInfo.For more information, see NumberFormatInfo.CurrentInfo. Bir dizeyi başka bir belirtilen kültürün biçimlendirme bilgilerini kullanarak ayrıştırmak için, Double.TryParse(String, NumberStyles, IFormatProvider, Double) yöntem aşırı yüklemesini kullanın.To parse a string using the formatting information of some other specified culture, use the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method overload.

Genellikle yöntemini Double.TryParse çağırarak oluşturulan bir dize yöntemi geçirirseniz Double.ToString , özgün Double değer döndürülür.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. Ancak, duyarlılık kaybı nedeniyle, değerleri eşit olmayabilir.However, because of a loss of precision, the values may not be equal. Ayrıca, ya da ' nin dize gösterimini ayrıştırmaya Double.MinValue veya Double.MaxValue gidiş dönüş başarısız olmasına çalışıyor.In addition, attempting to parse the string representation of either Double.MinValue or Double.MaxValue fails to round-trip. .NET Framework ve .NET Core 2,2 ve önceki sürümlerde, bir oluşturur OverflowException .On .NET Framework and .NET Core 2.2 and previous versions, it throws an OverflowException. .NET Core 3,0 ve sonraki sürümlerinde, ayrıştırmaya Double.NegativeInfinity MinValue veya ayrıştırmaya çalışırsanız, döndürür Double.PositiveInfinity MaxValue .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. Aşağıdaki örnek, bir gösterim sağlar.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 ve .NET Core 2,2 ve önceki sürümlerinde, s veri türü Aralık dışında olursa Double TryParse(String, Double) Yöntem bir oluşturur OverflowException .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 ve sonraki sürümlerinde, s veri türü aralığı dışında bir durum oluşturulmaz Double .On .NET Core 3.0 and later versions, no exception is thrown when s is out of range of the Double data type. Çoğu durumda, TryParse(String, Double) yöntemi veya sonucunu hesaplar Double.PositiveInfinity Double.NegativeInfinity .In most cases, the TryParse(String, Double) method calculates a result of Double.PositiveInfinity or Double.NegativeInfinity. Ancak, Double pozitif veya negatif sonsuzluk en büyük veya en düşük değerlerine daha yakın bir değer kümesi vardır.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. Bu durumlarda, yöntemi veya sonucunu hesaplar Double.MaxValue Double.MinValue .In those cases, the method calculates a result of Double.MaxValue or Double.MinValue.

sBir ayrıştırma işlemi sırasında parametresinde bir ayırıcıya rastlandı ve ondalık ve grup ayırıcıları aynı ise, Parse işlemi ayırıcının bir grup ayırıcısı yerine ondalık ayırıcı olduğunu varsayar.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. Ayırıcılar hakkında daha fazla bilgi için bkz CurrencyDecimalSeparator .,, NumberDecimalSeparator CurrencyGroupSeparator ve NumberGroupSeparator .For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

Ayrıca bkz.

Şunlara uygulanır

TryParse(ReadOnlySpan<Char>, Double)

Belirtilen bir stilin ve kültüre özgü biçimdeki bir sayının span gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.Converts the span representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.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

Parametreler

s
ReadOnlySpan<Char>

Dönüştürülecek sayının dize gösterimini içeren bir karakter aralığı.A character span that contains the string representation of the number to convert.

result
Double

Bu yöntem döndüğünde, dönüştürme başarılı olursa sayısal değer veya sembolün çift duyarlıklı kayan noktalı sayı eşdeğerini veya dönüştürme s başarısız olursa sıfır değerini içerir.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. sParametre veya boşsa, dönüştürme başarısız olur null veya ile uyumlu bir biçimde değildir style .The conversion fails if the s parameter is null or empty, or is not in a format compliant with style. Ayrıca, style numaralandırılmış sabitlerin geçerli bir birleşimi değilse dönüştürme başarısız olur NumberStyles .The conversion also fails if style is not a valid combination of NumberStyles enumerated constants. sGeçerli bir sayı ise küçüktür MinValue result NegativeInfinity .If s is a valid number less than MinValue, result is NegativeInfinity. s, Değerinden büyük geçerli bir sayı ise MaxValue , result PositiveInfinity .If s is a valid number greater than MaxValue, result is PositiveInfinity. Bu parametre başlatılmamış olarak geçildi; Başlangıçta sağlanan değerin result üzerine yazılır.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Döndürülenler

Boolean

truesbaşarıyla dönüştürülürse; Aksi takdirde, false .true if s was converted successfully; otherwise, false.

Açıklamalar

.NET Core 3,0 ve üzeri sürümlerde, temsil edilecek çok büyük değerler PositiveInfinity NegativeInfinity IEEE 754 belirtimine göre veya gerektiği şekilde yuvarlanır.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. Önceki sürümlerde, .NET Framework dahil olmak üzere çok büyük bir değeri ayrıştırmak hataya neden oldu.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Şunlara uygulanır

TryParse(String, NumberStyles, IFormatProvider, Double)

Belirtilen bir stil ve kültüre özgü biçimdeki bir sayının dize gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür.Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.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);
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

Parametreler

s
String

Dönüştürülecek sayıyı içeren bir dize.A string containing a number to convert.

style
NumberStyles

NumberStylesİzin verilen biçimini gösteren değerlerin bit tabanlı birleşimi s .A bitwise combination of NumberStyles values that indicates the permitted format of s. Belirtmek için tipik bir değer Float ile birleştirilir AllowThousands .A typical value to specify is Float combined with AllowThousands.

provider
IFormatProvider

IFormatProviderHakkında kültüre özgü biçimlendirme bilgileri sağlayan bir s .An IFormatProvider that supplies culture-specific formatting information about s.

result
Double

Bu yöntem döndüğünde, s dönüştürme başarılı olursa veya dönüştürme başarısız olursa sıfır olan sayısal değer veya sembolün çift duyarlıklı kayan noktalı sayı eşdeğerini içerir.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. sParametresi null veya Empty ile uyumlu bir biçimde değilse veya style geçerli bir style Numaralandırma sabitleri birleşimi değilse, NumberStyles dönüştürme başarısız olur.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. Ayrıca, .NET Framework veya .NET Core 2,2 ve önceki sürümlerde de başarısız olur ve bundan daha s büyük bir sayıyı temsil eder MinValue 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. Bu parametre başlatılmamış olarak geçildi; Başlangıçta sağlanan değerin result üzerine yazılır.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Döndürülenler

Boolean

truesbaşarıyla dönüştürülürse; Aksi takdirde, false .true if s was converted successfully; otherwise, false.

Özel durumlar

style bir değer değil NumberStyles .style is not a NumberStyles value.

-veya--or- style değerini içerir AllowHexSpecifier .style includes the AllowHexSpecifier value.

Örnekler

Aşağıdaki örnek, Double.TryParse(String, NumberStyles, IFormatProvider, Double) belirli bir stile sahip olan ve belirli bir kültürün kuralları kullanılarak biçimlendirilen sayıların dize gösterimini ayrıştırmak için yönteminin kullanımını gösterir.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'.

Açıklamalar

.NET Core 3,0 ve üzeri sürümlerde, temsil edilecek çok büyük değerler PositiveInfinity NegativeInfinity IEEE 754 belirtimine göre veya gerektiği şekilde yuvarlanır.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. Önceki sürümlerde, .NET Framework dahil olmak üzere çok büyük bir değeri ayrıştırmak hataya neden oldu.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Yöntemi TryParse Parse(String, NumberStyles, IFormatProvider) yöntemine benzer, ancak dönüştürme başarısız olursa bu yöntem bir özel durum oluşturmaz.The TryParse method is like the Parse(String, NumberStyles, IFormatProvider) method, except this method does not throw an exception if the conversion fails. Dönüştürme başarılı olursa, dönüş değeri olur true ve result parametresi dönüştürmenin sonucuna ayarlanır.If the conversion succeeds, the return value is true and the result parameter is set to the outcome of the conversion. Dönüştürme başarısız olursa, dönüş değeri olur false ve result parametresi sıfır olarak ayarlanır.If the conversion fails, the return value is false and the result parameter is set to zero. Bu, geçersiz bir olayda bir için test etmek üzere özel durum işlemenin kullanılması gereksinimini ortadan kaldırır FormatException s ve başarıyla ayrıştırılamaz.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.

styleParametresi, s ayrıştırma işleminin başarılı olması için parametrenin izin verilen biçimini tanımlar.The style parameter defines the allowable format of the s parameter for the parse operation to succeed. Numaralandırmadaki bit bayrakları birleşimi olmalıdır NumberStyles .It must be a combination of bit flags from the NumberStyles enumeration. Aşağıdaki NumberStyles Üyeler desteklenmez:The following NumberStyles members are not supported:

sParametresi NumberFormatInfo.PositiveInfinitySymbol NumberFormatInfo.NegativeInfinitySymbol NumberFormatInfo.NaNSymbol tarafından gösterilen kültür için, veya içerebilir provider .The s parameter can contain NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, or NumberFormatInfo.NaNSymbol for the culture indicated by provider. Ayrıca, değerine bağlı olarak, style s parametresi aşağıdaki öğeleri içerebilir:In addition, depending on the value of style, the s parameter may include the following elements:

RW [$] imzalayabilirsiniz [tamsayı rakamları,] integral rakamları [. kesirli basamaklar] [e [imzala] üstel basamaklar] [ws][ws] [$] [sign][integral-digits,]integral-digits[.fractional-digits][e[sign]exponential-digits][ws]

Köşeli ayraçlar ([ve]) içindeki öğeler isteğe bağlıdır.Elements in square brackets ([ and ]) are optional. Aşağıdaki tablo her öğeyi açıklar.The following table describes each element.

ÖğeElement AçıklamaDescription
wsws İsteğe bağlı beyaz boşluk.Optional white space. Boşluk, bayrağını içeriyorsa, öğesinin başlangıcında görünebilir s style NumberStyles.AllowLeadingWhite .White space can appear at the beginning of s if style includes the NumberStyles.AllowLeadingWhite flag. İşaretini içeriyorsa, sonunda görünebilirler s style NumberStyles.AllowTrailingWhite .It can appear at the end of s if style includes the NumberStyles.AllowTrailingWhite flag.
$ Kültüre özgü para birimi simgesi.A culture-specific currency symbol. Dizedeki konumu, NumberFormatInfo.CurrencyNegativePattern NumberFormatInfo.CurrencyPositivePattern NumberFormatInfo parametresinin yöntemi tarafından döndürülen nesnesinin veya özellikleri tarafından tanımlanır IFormatProvider.GetFormat provider .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. Para birimi simgesi s bayrağı içeriyorsa içinde görünebilir style NumberStyles.AllowCurrencySymbol .The currency symbol can appear in s if style includes the NumberStyles.AllowCurrencySymbol flag.
signsign İsteğe bağlı bir işaret.An optional sign. İşareti, bayrağını içeriyorsa ' nin başlangıcında görünebilir s style ve işaretini içeriyorsa, NumberStyles.AllowLeadingSign sonunda görünebilir s style NumberStyles.AllowTrailingSign .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. Parantez s , işaretini içeriyorsa negatif bir değeri göstermek için içinde kullanılabilir style NumberStyles.AllowParentheses .Parentheses can be used in s to indicate a negative value if style includes the NumberStyles.AllowParentheses flag.
tamsayı basamaklarintegral-digits Sayının tamsayı kısmını belirten 0-9 arasında bir rakam dizisi.A series of digits ranging from 0 to 9 that specify the integral part of the number. Kesirli basamaklar varsa tamsayı basamaklar bulunmayabilir.Integral-digits can be absent if there are fractional-digits.
,, Kültüre özgü binler basamaklarını ayıran simge.A culture-specific thousands separator symbol. Geçerli kültürün binlik ayırıcı simgesi, s bayrağını içeriyorsa içinde görünebilir style NumberStyles.AllowThousands .The current culture's thousands separator symbol can appear in s if style includes the NumberStyles.AllowThousands flag.
.. Bir kültüre özgü ondalık nokta sembolü.A culture-specific decimal point symbol. Geçerli kültürün ondalık noktası simgesi, s bayrağını içeriyorsa içinde görünebilir style NumberStyles.AllowDecimalPoint .The current culture's decimal point symbol can appear in s if style includes the NumberStyles.AllowDecimalPoint flag.
kesirli basamaklarfractional-digits Sayının kesirli bölümünü belirten 0-9 arasında bir rakam dizisi.A series of digits ranging from 0 to 9 that specify the fractional part of the number. , Bayrağını içeriyorsa kesirli basamaklar içinde görünebilirler s style NumberStyles.AllowDecimalPoint .Fractional digits can appear in s if style includes the NumberStyles.AllowDecimalPoint flag.
ae sÜstel gösterimi kullanarak bir sayıyı temsil ettiğini gösteren e veya e karakteri.The e or E character, which indicates that s can represent a number using exponential notation. sStil bayrağı içeriyorsa, parametre üstel gösterimde bir sayıyı temsil edebilir NumberStyles.AllowExponent .The s parameter can represent a number in exponential notation if style includes the NumberStyles.AllowExponent flag.
üstel basamaklarexponential-digits Bir üssü belirten, 0-9 arasında olan rakam dizisi.A series of digits ranging from 0 to 9 that specify an exponent.

Not

' Deki herhangi bir Sonlandırıcı NUL (U + 0000) karakteri, s bağımsız değişkenin değerine bakılmaksızın ayrıştırma işlemi tarafından yok sayılır style .Any terminating NUL (U+0000) characters in s are ignored by the parsing operation, regardless of the value of the style argument.

Yalnızca rakam olan (stile karşılık gelen) bir dize, NumberStyles.None türün aralığındaki her zaman başarıyla ayrıştırır 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. Kalan Üyeler,, System.Globalization.NumberStyles ancak giriş dizesinde bulunması gerekli olmayan öğeleri denetler.The remaining System.Globalization.NumberStyles members control elements that may be but are not required to be present in the input string. Aşağıdaki tabloda, tek tek NumberStyles bayrakların ' de bulunabilecek öğeleri nasıl etkilediği gösterilmektedir s .The following table indicates how individual NumberStyles flags affect the elements that may be present in s.

NumberStyles değeriNumberStyles value Basamaklara olarak s bileşeninde izin verilen öğelerElements permitted in s in addition to digits
None Yalnızca integral rakamları öğesi.The integral-digits element only.
AllowDecimalPoint Dosyanın başındaki .The . ve kesirli basamaklar öğeleri.and fractional-digits elements.
AllowExponent sParametresi üstel gösterimi de kullanabilir.The s parameter can also use exponential notation. Bu bayrak, tek başına biçimindeki değeri, tam sayı olan E üstel rakamları destekler; üstel gösterimde dizeleri pozitif veya negatif işaretler ve ondalık nokta sembolleri olarak başarıyla ayrıştırmak için ek bayraklar gerekir.This flag by itself supports values in the form integral-digits E exponential-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 Öğesinin başındaki WS öğesi s .The ws element at the beginning of s.
AllowTrailingWhite Sonunda WS öğesi s .The ws element at the end of s.
AllowLeadingSign Öğesinin başındaki Sign öğesi s .The sign element at the beginning of s.
AllowTrailingSign Öğesinin sonundaki işaret öğesi s .The sign element at the end of s.
AllowParentheses Sayısal değeri çevreleyen parantezler biçimindeki işaret öğesi.The sign element in the form of parentheses enclosing the numeric value.
AllowThousands , Öğesi.The , element.
AllowCurrencySymbol $ Öğesi.The $ element.
Currency Tüm.All. sParametre, bir onaltılı sayıyı veya üstel gösterimdeki bir sayıyı temsil edemez.The s parameter cannot represent a hexadecimal number or a number in exponential notation.
Float ' In başındaki veya sonundaki WS öğesi s ve ' nin başlangıcında oturum açın s .The ws element at the beginning or end of s, sign at the beginning of s, and the . sembol.symbol. sParametresi üstel gösterimi de kullanabilir.The s parameter can also use exponential notation.
Number ws,, sign Binlik ayırıcı (,) ve ondalık nokta (.) öğeleri.The ws, sign, thousands separator (,), and decimal point (.) elements.
Any Hariç tüm stiller, s onaltılı bir sayıyı temsil edemez.All styles, except s cannot represent a hexadecimal number.

providerParametresi IFormatProvider , veya nesnesi gibi bir uygulama NumberFormatInfo CultureInfo .The provider parameter is a IFormatProvider implementation, such as a NumberFormatInfo or CultureInfo object. providerParametresi, ayrıştırılırken kullanılan kültüre özgü bilgiler sağlar.The provider parameter supplies culture-specific information used in parsing. providerYa da null bir NumberFormatInfo nesne alınamıyorsa, geçerli kültürün biçim bilgisi kullanılır.If provider is null or a NumberFormatInfo object cannot be obtained, the format information for the current culture is used.

sParametre bir null sayısal değer değilse, parametre provider bir nesne oluşturmaz NumberFormatInfo veya style parametre Numaralandırmadaki bir bit bayrakları birleşimi değilse NumberStyles , dönüştürme başarısız olur.The 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.

Genellikle yöntemini Double.TryParse çağırarak oluşturulan bir dize yöntemi geçirirseniz Double.ToString , özgün Double değer döndürülür.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. Ancak, duyarlılık kaybı nedeniyle, değerleri eşit olmayabilir.However, because of a loss of precision, the values may not be equal. Ayrıca, ya da ' nin dize gösterimini ayrıştırmaya Double.MinValue veya Double.MaxValue gidiş dönüş başarısız olmasına çalışıyor.In addition, attempting to parse the string representation of either Double.MinValue or Double.MaxValue fails to round-trip. .NET Framework ve .NET Core 2,2 ve önceki sürümlerde, bir oluşturur OverflowException .On .NET Framework and .NET Core 2.2 and previous versions, it throws an OverflowException. .NET Core 3,0 ve sonraki sürümlerinde, ayrıştırmaya Double.NegativeInfinity MinValue veya ayrıştırmaya çalışırsanız, döndürür Double.PositiveInfinity MaxValue .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. Aşağıdaki örnek, bir gösterim sağlar.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 ve .NET Core 2,2 ve önceki sürümlerinde, s veri türü Aralık dışında olursa Double Double.TryParse(String, NumberStyles, IFormatProvider, Double) Yöntem bir oluşturur OverflowException .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 ve sonraki sürümlerinde, s veri türü aralığı dışında bir durum oluşturulmaz Double .On .NET Core 3.0 and later versions, no exception is thrown when s is out of range of the Double data type. Çoğu durumda, Double.TryParse(String, NumberStyles, IFormatProvider, Double) yöntemi veya sonucunu hesaplar Double.PositiveInfinity Double.NegativeInfinity .In most cases, the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method calculates a result of Double.PositiveInfinity or Double.NegativeInfinity. Ancak, Double pozitif veya negatif sonsuzluk en büyük veya en düşük değerlerine daha yakın bir değer kümesi vardır.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. Bu durumlarda, yöntemi veya sonucunu hesaplar Double.MaxValue Double.MinValue .In those cases, the method calculates a result of Double.MaxValue or Double.MinValue.

sBir ayrıştırma işlemi sırasında parametresinde bir ayırıcıyla karşılaşılırsa ve ilgili para birimi veya sayı ondalık ve Grup ayırıcılar aynı ise, ayrıştırma işlemi, ayırıcının bir grup ayırıcısı yerine ondalık ayırıcı olduğunu varsayar.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. Ayırıcılar hakkında daha fazla bilgi için bkz CurrencyDecimalSeparator .,, NumberDecimalSeparator CurrencyGroupSeparator ve NumberGroupSeparator .For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

Ayrıca bkz.

Şunlara uygulanır