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. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

Aşırı Yüklemeler

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Bir karakter aralığını bir değere ayrıştırmaya çalışır.

TryParse(ReadOnlySpan<Char>, Double)

Bir sayının belirtilen stil ve kültüre özgü biçimdeki span gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

TryParse(String, Double)

Bir sayının size gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

TryParse(String, IFormatProvider, Double)

Bir dizeyi bir değere ayrıştırmaya çalışır.

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

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

TryParse(ReadOnlySpan<Byte>, Double)

Bir sayının dize gösterimini içeren UTF-8 karakter aralığını çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürmeye çalışır.

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

Belirtilen stilde ve kültüre özgü biçimde bir sayının dize gösterimini içeren karakter aralığını çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

TryParse(String, NumberStyles, IFormatProvider, Double)

Belirtilen stilde 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. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

Açıklamalar

.NET Core 3.0 ve sonraki sürümlerde, temsil etmek için çok büyük olan değerler IEEE 754 belirtimine göre veya NegativeInfinity gerekli olduğu şekilde yuvarlanmaktadırPositiveInfinity. .NET Framework dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan bir değeri ayrıştırmak hataya neden oldu.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
Kaynak:
Double.cs

Bir karakter aralığını bir değere ayrıştırmaya çalışır.

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

Parametreler

s
ReadOnlySpan<Char>

Ayrıştırılacak karakterlerin yayılması.

provider
IFormatProvider

hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Double

Bu yöntem döndürdüğünde, başarıyla ayrıştırma sişleminin sonucunu veya hatada tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa s ; değilse, false.

Şunlara uygulanır

TryParse(ReadOnlySpan<Char>, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
Kaynak:
Double.cs

Bir sayının belirtilen stil ve kültüre özgü biçimdeki span gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

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 karakter aralığı.

result
Double

Bu yöntem döndürdüğünde, parametrede bulunan s sayısal değerin veya simgenin çift duyarlıklı kayan noktalı sayı eşdeğerini, dönüştürme başarılı olursa veya dönüştürme başarısız olursa sıfırı içerir. Parametre null boş veya ile styleuyumlu bir biçimde değilse dönüştürme başarısız olurs. Numaralandırılmış sabitlerin NumberStyles geçerli bir bileşimi değilse style dönüştürme de başarısız olur. Double.MinValue değerinden küçük geçerli bir sayıysas, result değeridirNegativeInfinity. Double.MaxValue değerinden büyük geçerli bir sayıysas, result değeridirPositiveInfinity. Bu parametre başlatılmadan geçirilir; başlangıçta sağlanan result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Açıklamalar

.NET Core 3.0 ve sonraki sürümlerde, temsil edilemeyecek kadar büyük değerler, IEEE 754 belirtiminin gerektirdiği şekilde veya NegativeInfinity değerine yuvarlanrPositiveInfinity. .NET Framework dahil olmak üzere önceki sürümlerde, temsil edilemeyecek kadar büyük bir değeri ayrıştırmak hatayla sonuçlandı.

Şunlara uygulanır

TryParse(String, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
Kaynak:
Double.cs

Bir sayının size gösterimini çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

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.

result
Double

Bu yöntem döndürdüğünde, dönüştürme başarılı olursa parametrenin s çift duyarlıklı kayan nokta sayısını veya dönüştürme başarısız olursa sıfırı içerir. Parametre null geçerli biçimde bir sayıysa s veya Empty değilse dönüştürme başarısız olur. Double.MinValue değerinden küçük veya Double.MaxValue değerinden büyük bir sayıyı temsil eden s .NET Framework ve .NET Core 2.2 ve önceki sürümlerde de başarısız olur. Bu parametre başlatılmadan geçirilir; başlangıçta sağlanan result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Örnekler

Aşağıdaki örnek, sayısal değerlerin TryParse(String, Double) dize gösterimlerini değerlere dönüştürmek için Double yöntemini kullanır. En-US'nin geçerli kültür olduğunu varsayar.

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'.
open System

let values =
    [| "1,643.57"; "$1,643.57"; "-1.643e6"
       "-168934617882109132"; "123AE6"
       null; String.Empty; "ABCDEF" |]

for value in values do
    match Double.TryParse value with
    | true, number ->
        printfn $"'{value}' --> {number}"
    | _ ->
        printfn $"Unable to parse '{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 sonraki sürümlerde, temsil edilemeyecek kadar büyük değerler, IEEE 754 belirtiminin gerektirdiği şekilde veya NegativeInfinity değerine yuvarlanrPositiveInfinity. .NET Framework dahil olmak üzere önceki sürümlerde, temsil edilemeyecek kadar büyük bir değeri ayrıştırmak hatayla sonuçlandı.

Bu aşırı yükleme, ayrıştırılmış sayısal değeri döndürmek yerine ayrıştırma işleminin başarılı olup olmadığını belirten bir Boole değeri döndürerek yönteminden Double.Parse(String) farklıdır. Geçersiz olan ve başarıyla ayrıştırılamayan bir olayda s test etmek için FormatException özel durum işleme kullanma gereksinimini ortadan kaldırır.

s parametresi geçerli kültürün NumberFormatInfo.PositiveInfinitySymbol, , NumberFormatInfo.NegativeInfinitySymbolNumberFormatInfo.NaNSymbol (dize karşılaştırması büyük/küçük harfe duyarlıdır) veya formun dizesini içerebilir:

[ws] [sign] [integral-digits,]integral-digits[.[ kesirli basamaklar]][e[işaret]üstel basamaklar][ws]

Köşeli parantezler içindeki öğeler isteğe bağlıdır. Aşağıdaki tablo her öğeyi açıklar.

Öğe Açıklama
Ws Boşluk karakterlerinden oluşan bir dizi.
sign Eksi işareti ve artı işareti simgesi.
tamsayı basamaklar Sayının tamsayı kısmını belirten 0 ile 9 arasında bir sayısal karakter dizisi. Kesirli basamaklar varsa tamsayı basamaklar bulunmayabilir.
, Kültüre özgü bir grup ayırıcı simge.
. Bir kültüre özgü ondalık nokta sembolü.
kesirli basamaklar Sayının kesirli bölümünü belirten, 0 ile 9 arasında değişen bir sayısal karakter serisi.
E Üstel (bilimsel) gösterimi gösteren büyük veya küçük harfli 'e' karakteri.
üstel basamaklar 0 ile 9 arasında bir üs belirten sayısal karakter serisi.

Sayısal biçimler hakkında daha fazla bilgi için bkz . Biçimlendirme Türleri.

s parametresi ve NumberStyles.AllowThousands bayraklarının NumberStyles.Float bir bileşimi kullanılarak yorumlanır. Bu, boşluk ve binlik ayırıcılarına izin verildiği, ancak para birimi simgelerine izin verilmediği anlamına gelir. içinde sbulunabilecek öğeleri (para birimi simgeleri, binlik ayırıcılar ve boşluk gibi) açıkça tanımlamak için yöntemi aşırı yüklemesini Double.TryParse(String, NumberStyles, IFormatProvider, Double) kullanın.

s parametresi, geçerli sistem kültürü için başlatılan bir NumberFormatInfo nesnedeki biçimlendirme bilgileri kullanılarak ayrıştırılır. Daha fazla bilgi için bkz. NumberFormatInfo.CurrentInfo. Belirtilen başka bir kültürün biçimlendirme bilgilerini kullanarak bir dizeyi ayrıştırmak için yöntemi aşırı yüklemesini Double.TryParse(String, NumberStyles, IFormatProvider, Double) kullanın.

Normalde yöntemini çağırarak oluşturulan bir dize geçirirseniz Double.TryParseDouble.ToString özgün Double değer döndürülür. Ancak, duyarlılık kaybı nedeniyle, değerleri eşit olmayabilir. Buna ek olarak, ya da Double.MinValueDouble.MaxValue dize gösterimini ayrıştırma girişimi gidiş dönüş başarısız olur. .NET Framework ve .NET Core 2.2 ve önceki sürümlerde bir OverflowExceptionoluşturur. .NET Core 3.0 ve sonraki sürümlerde, ayrıştırmaya çalışırsanız veya Double.PositiveInfinity ayrıştırmaya MaxValueMinValue çalışırsanız döndürürDouble.NegativeInfinity. Aşağıdaki örnek, bir gösterim sağlar.

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.
open System

[<EntryPoint>]
let main _ = 
    let value = string Double.MinValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    let value = string Double.MaxValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    0
// 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ümlerde, veri türünün aralığının Double dışındaysa s yöntemi TryParse(String, Double) bir OverflowExceptionoluşturur.

.NET Core 3.0 ve sonraki sürümlerde, veri türünün aralığı Double dışında olduğunda s özel durum atılır. Çoğu durumda yöntemi veya TryParse(String, Double)Double.NegativeInfinitysonucunu Double.PositiveInfinity hesaplar. Ancak, en yüksek veya en düşük değerlerine pozitif veya negatif sonsuzdan daha yakın olduğu düşünülen küçük bir değer Double kümesi vardır. Böyle durumlarda yöntemi veya Double.MinValuesonucunu Double.MaxValue hesaplar.

Ayrıştırma işlemi sırasında parametrede s bir ayırıcıyla karşılaşılırsa ve ondalık ve grup ayırıcıları aynıysa, ayrıştırma işlemi ayırıcının grup ayırıcısı yerine ondalık ayırıcısı olduğunu varsayar. Ayırıcılar hakkında daha fazla bilgi için bkz CurrencyDecimalSeparator. , NumberDecimalSeparator, CurrencyGroupSeparatorve NumberGroupSeparator.

Ayrıca bkz.

Şunlara uygulanır

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = IUtf8SpanParsable<double>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out double result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * double -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Double) As Boolean

Parametreler

utf8Text
ReadOnlySpan<Byte>

Ayrıştırılacak UTF-8 karakter aralığı.

provider
IFormatProvider

hakkında utf8Textkültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Double

Sonuç olarak, başarıyla ayrıştırma utf8Text işleminin sonucunu veya hata durumunda tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa utf8Text ; aksi takdirde , false.

Şunlara uygulanır

TryParse(String, IFormatProvider, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
Kaynak:
Double.cs

Bir dizeyi bir değere ayrıştırmaya çalışır.

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

Parametreler

s
String

Ayrıştıracak dize.

provider
IFormatProvider

hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Double

Bu yöntem döndürdüğünde, başarıyla ayrıştırma s işleminin sonucunu veya hata durumunda tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa s ; aksi takdirde , false.

Şunlara uygulanır

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

Kaynak:
Double.cs
Kaynak:
Double.cs

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

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

Parametreler

utf8Text
ReadOnlySpan<Byte>

Ayrıştırılacak UTF-8 karakter aralığı.

style
NumberStyles

içinde utf8Textbulunabilecek sayı stillerinin bit düzeyinde birleşimi.

provider
IFormatProvider

hakkında utf8Textkültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Double

Sonuç olarak, başarıyla ayrıştırma utf8Text işleminin sonucunu veya hata durumunda tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa utf8Text ; aksi takdirde , false.

Şunlara uygulanır

TryParse(ReadOnlySpan<Byte>, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs

Bir sayının dize gösterimini içeren UTF-8 karakter aralığını çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürmeye çalışır.

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

Parametreler

utf8Text
ReadOnlySpan<Byte>

Dönüştürülecek sayıyı içeren salt okunur UTF-8 karakter aralığı.

result
Double

Bu yöntem döndürdüğünde, dönüştürme başarılı olursa sayısal değerin veya içinde bulunan utf8Text simgenin çift duyarlıklı kayan noktalı sayı eşdeğerini veya dönüştürme başarısız olursa sıfırı içerir. veya geçerli bir biçimde değilse utf8TextEmpty dönüştürme başarısız olur. Bu parametre başlatılmadan geçirilir; başlangıçta sonuçta sağlanan tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse utf8Text ; aksi takdirde , false.

Şunlara uygulanır

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

Kaynak:
Double.cs
Kaynak:
Double.cs
Kaynak:
Double.cs

Belirtilen stilde ve kültüre özgü biçimdeki bir sayının dize gösterimini içeren karakter aralığını çift duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

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, [Runtime::InteropServices::Out] double % result) = System::Numerics::INumberBase<double>::TryParse;
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 okunur karakter aralığı.

style
NumberStyles

İzin verilen biçimini gösteren değerlerin bit düzeyinde birleşimi NumberStyless. Belirtilmesi Float gereken tipik bir değer ile AllowThousandsbirleştirilir.

provider
IFormatProvider

hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Double

Bu yöntem döndürdüğünde ve dönüştürme başarılı olduysa, içinde bulunan ssayısal değer veya simgenin çift duyarlıklı kayan noktalı sayı eşdeğerini içerir. Dönüştürme başarısız olursa sıfır içerir. parametresi null, boş bir karakter aralığı ise s veya ile styleuyumlu bir biçimdeki bir sayı değilse dönüştürme başarısız olur. Double.MinValue değerinden küçük geçerli bir sayıysas, result olurNegativeInfinity. Double.MaxValue değerinden büyük geçerli bir sayı ises, result olurPositiveInfinity. Bu parametre başlatılmadan geçirilir; başlangıçta verilen result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Açıklamalar

.NET Core 3.0 ve sonraki sürümlerde, temsil etmek için çok büyük olan değerler IEEE 754 belirtimine göre veya NegativeInfinity gerekli olduğu şekilde yuvarlanmaktadırPositiveInfinity. .NET Framework dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan bir değeri ayrıştırmak hataya neden oldu.

Şunlara uygulanır

TryParse(String, NumberStyles, IFormatProvider, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
Kaynak:
Double.cs

Belirli bir stildeki 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. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result);
public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = System::Numerics::INumberBase<double>::TryParse;
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.

style
NumberStyles

İzin verilen biçimini gösteren değerlerin bit düzeyinde birleşimi NumberStyless. Belirtilmesi Float gereken tipik bir değer ile AllowThousandsbirleştirilir.

provider
IFormatProvider

IFormatProvider hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir.

result
Double

Bu yöntem döndürdüğünde, içinde yer salan sayısal değerin veya simgenin çift duyarlıklı kayan noktalı sayı eşdeğerini, dönüştürme başarılı olursa sıfırı veya dönüştürme başarısız olursa sıfırı içerir. parametre ile uyumlu stylebir biçimdeyse s veya Empty değilse ya da sabit listesi sabitlerinin NumberStyles geçerli bir bileşimi değilse style dönüştürme başarısız olur.null SByte.MinValue değerinden küçük veya SByte.MaxValue değerinden büyük bir sayıyı temsil eden s .NET Framework veya .NET Core 2.2 ve önceki sürümlerde de başarısız olur. Bu parametre başlatılmadan geçirilir; başlangıçta verilen result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Özel durumlar

style bir NumberStyles değer değildir.

-veya-

styleAllowHexSpecifier değerini içerir.

Örnekler

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

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'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = NumberStyles.Number ||| NumberStyles.AllowCurrencySymbol
let culture = CultureInfo.CreateSpecificCulture "en-GB"
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '£1,097.63' to 1097.63.

let value = "1345,978"
let style = NumberStyles.AllowDecimalPoint
let culture = CultureInfo.CreateSpecificCulture "fr-FR"
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '1345,978' to 1345.978.

let value = "1.345,978"
let style = NumberStyles.AllowDecimalPoint ||| NumberStyles.AllowThousands
let culture = CultureInfo.CreateSpecificCulture("es-ES")
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '1.345,978' to 1345.978.

let value = "1 345,978"
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{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 sonraki sürümlerde, temsil etmek için çok büyük olan değerler IEEE 754 belirtimine göre veya NegativeInfinity gerekli olduğu şekilde yuvarlanmaktadırPositiveInfinity. .NET Framework dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan bir değeri ayrıştırmak hataya neden oldu.

TryParse yöntemi yöntemine Parse(String, NumberStyles, IFormatProvider) benzer, ancak dönüştürme başarısız olursa bu yöntem özel durum oluşturmaz. Dönüştürme başarılı olursa dönüş değeri olur true ve result parametresi dönüştürmenin sonucuna ayarlanır. Dönüştürme başarısız olursa dönüş değeri olur false ve result parametre sıfır olarak ayarlanır. Bu, geçersiz olan ve başarıyla ayrıştırılamayan bir durumunda s test FormatException etmek için özel durum işleme kullanma gereksinimini ortadan kaldırır.

style parametresi, ayrıştırma işleminin s başarılı olması için parametrenin izin verilebilen biçimini tanımlar. Numaralandırmadaki NumberStyles bit bayraklarının bir bileşimi olmalıdır. Aşağıdaki NumberStyles üyeler desteklenmez:

s parametresi tarafından belirtilen providerkültür için , NumberFormatInfo.NegativeInfinitySymbolveya NumberFormatInfo.NaNSymbol içerebilirNumberFormatInfo.PositiveInfinitySymbol. Buna ek olarak, değerine styles bağlı olarak parametresi aşağıdaki öğeleri içerebilir:

[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. Aşağıdaki tablo her öğeyi açıklar.

Öğe Açıklama
Ws İsteğe bağlı beyaz boşluk. bayrağını içeriyorsa boşluk öğesinin sstyleNumberStyles.AllowLeadingWhite başında görüntülenebilir. bayrağını içeriyorsa NumberStyles.AllowTrailingWhite sonunda sstyle görüntülenebilir.
$ Kültüre özgü para birimi simgesi. Dizedeki konumu, parametresinin NumberFormatInfo.CurrencyNegativePattern yöntemi provider tarafından döndürülen nesnenin NumberFormatInfo veya NumberFormatInfo.CurrencyPositivePattern özellikleri tarafından IFormatProvider.GetFormat tanımlanır. Bayrağı içeriyorsa NumberStyles.AllowCurrencySymbol para birimi simgesi içinde sstyle görünebilir.
sign İsteğe bağlı bir işaret. İşaret, bayrağını içeriyorsa öğesinin sstyleNumberStyles.AllowLeadingSign başında ve bayrağını içeriyorsa NumberStyles.AllowTrailingSign sonunda sstyle görüntülenebilir. Parantezler, bayrağı içeriyorsa NumberStyles.AllowParentheses negatif bir değeri style belirtmek için içinde kullanılabilirs.
tamsayı basamaklar Sayının tamsayı kısmını belirten 0-9 arasında bir rakam dizisi. Kesirli basamaklar varsa tamsayı basamaklar bulunmayabilir.
, Kültüre özgü binler basamaklarını ayıran simge. bayrağını style içeriyorsa geçerli kültürün NumberStyles.AllowThousands binlik ayırıcı simgesi içinde s görüntülenebilir.
. Bir kültüre özgü ondalık nokta sembolü. bayrağını style içeriyorsa geçerli kültürün NumberStyles.AllowDecimalPoint ondalık noktası simgesi içinde s görüntülenebilir.
kesirli basamaklar Sayının kesirli bölümünü belirten 0-9 arasında bir rakam dizisi. bayrağını style içeriyorsa kesirli basamaklar NumberStyles.AllowDecimalPoint içinde s görüntülenebilir.
E Üstel gösterimi kullanarak bir sayıyı temsil ettiğini gösteren s e veya E karakteri. Stil s bayrağını içeriyorsa parametresi üstel gösteriminde bir sayıyı NumberStyles.AllowExponent temsil edebilir.
üstel basamaklar Bir üssü belirten, 0-9 arasında olan rakam dizisi.

Not

içindeki s sonlandırıcı NUL (U+0000) karakterleri, bağımsız değişkenin değerinden style bağımsız olarak ayrıştırma işlemi tarafından yoksayılır.

Yalnızca basamak içeren bir dize (stile NumberStyles.None karşılık gelir) türün aralığındaysa Double her zaman başarıyla ayrıştırılır. Kalan System.Globalization.NumberStyles üyeler, giriş dizesinde mevcut olması gerekmeyen ancak gerekli olmayan öğeleri denetler. Aşağıdaki tablo, tek tek NumberStyles bayrakların içinde smevcut olabilecek öğeleri nasıl etkilediğini gösterir.

NumberStyles değeri Basamaklara olarak s bileşeninde izin verilen öğeler
None Yalnızca integral-digits öğesi.
AllowDecimalPoint . ve kesirli basamaklar öğeleri.
AllowExponent parametresi üstel s gösterimi de kullanabilir. Bu bayrak tek başına integral-digitsEüstel basamaklar biçimindeki değerleri destekler; Artı veya negatif işaretler ve ondalık nokta simgeleri gibi öğelerle üstel gösterimindeki dizeleri başarıyla ayrıştırmak için ek bayraklar gerekir.
AllowLeadingWhite başındaki sws öğesi.
AllowTrailingWhite sonundaki sws öğesi.
AllowLeadingSign başındaki ssign öğesi.
AllowTrailingSign sonundaki ssign öğesi.
AllowParentheses Sayısal değeri kapsayan parantez biçimindeki işaret öğesi.
AllowThousands , öğesi.
AllowCurrencySymbol $ öğesi.
Currency Tüm. s parametresi onaltılık bir sayıyı veya üstel gösterimi olan bir sayıyı temsil edemez.
Float öğesinin başındaki veya sonundaki sws öğesi, öğesinin sbaşında ve simgesiyleişaret eder. parametresi üstel s gösterimi de kullanabilir.
Number ws, sign, binlik ayırıcı (,) ve ondalık ayırıcı (.) öğeleri.
Any Dışındaki s tüm stiller onaltılık bir sayıyı temsil edemez.

provider parametresi, veya CultureInfo nesnesi gibi bir IFormatProviderNumberFormatInfo uygulamadır. provider parametresi, ayrıştırmada kullanılan kültüre özgü bilgiler sağlar. ise null veya bir NumberFormatInfo nesne alınamıyorsaprovider, geçerli kültür için biçim bilgileri kullanılır.

Parametre sayısal bir değerse snull veya değilse, provider parametre bir NumberFormatInfo nesne vermezse veya style parametre sabit listesi bit bayraklarının NumberStyles birleşimi değilse dönüştürme başarısız olur.

Normalde yöntemini çağırarak Double.ToString oluşturulan bir dize geçirirseniz Double.TryParse özgün Double değer döndürülür. Ancak, duyarlılık kaybı nedeniyle, değerleri eşit olmayabilir. Buna ek olarak, dize gösterimini Double.MinValue ayrıştırma girişimi veya Double.MaxValue gidiş dönüş başarısız olur. .NET Framework ve .NET Core 2.2 ve önceki sürümlerde bir OverflowExceptionoluşturur. .NET Core 3.0 ve sonraki sürümlerinde, ayrıştırmaya çalışırsanız veya Double.PositiveInfinity ayrıştırmaya MinValueMaxValueçalışırsanız döndürürDouble.NegativeInfinity. Aşağıdaki örnek, bir gösterim sağlar.

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.
open System

[<EntryPoint>]
let main _ = 
    let value = string Double.MinValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    let value = string Double.MaxValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    0
// 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ümlerde, veri türünün aralığının Double dışındaysa s yöntemi Double.TryParse(String, NumberStyles, IFormatProvider, Double) bir OverflowExceptionoluşturur.

.NET Core 3.0 ve sonraki sürümlerde, veri türünün aralığı Double dışında olduğunda s özel durum oluşturulur. Çoğu durumda yöntemi veya Double.TryParse(String, NumberStyles, IFormatProvider, Double)Double.NegativeInfinitysonucunu Double.PositiveInfinity hesaplar. Ancak, en büyük veya en düşük değerlerine pozitif veya negatif sonsuzdan daha yakın olduğu düşünülen küçük bir değer Double kümesi vardır. Bu gibi durumlarda yöntemi veya Double.MinValuesonucunu Double.MaxValue hesaplar.

Ayrıştırma işlemi sırasında parametrede s bir ayırıcıyla karşılaşılırsa ve geçerli para birimi veya sayı ondalık ve grup ayırıcıları aynıysa, ayrıştırma işlemi ayırıcının grup ayırıcısı yerine ondalık ayırıcı olduğunu varsayar. Ayırıcılar hakkında daha fazla bilgi için bkz. CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorve NumberGroupSeparator.

Ayrıca bkz.

Şunlara uygulanır