Aracılığıyla paylaş


Double.TryParse Yöntem

Tanım

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

Aşırı Yüklemeler

Name Description
TryParse(String, IFormatProvider, Double)

Bir dizeyi 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üş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir.

TryParse(String, Double)

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Bir karakter aralığını 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ç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üş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir.

TryParse(String, NumberStyles, IFormatProvider, Double)

Belirli bir 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üş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir.

Açıklamalar

.NET Core 3.0 ve sonraki sürümlerinde, temsil etmek için çok büyük olan değerler IEEE 754 belirtiminin gerektirdiği şekilde veya PositiveInfinity değerine yuvarlanirNegativeInfinity. .NET Framework de dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan bir değeri ayrıştırmak hatayla sonuçlandı.

TryParse(String, IFormatProvider, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
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ırmak için 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 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
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üş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir.

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, dönüştürme başarılı olursa parametrede s yer alan sayısal değerin veya simgenin eşdeğeri çift duyarlıklı kayan nokta numarasını veya dönüştürme başarısız olursa sıfırı içerir. Parametre s boşsa veya boşsa null dönüştürme başarısız olur. s değerinden küçük geçerli bir sayıysa, result olurNegativeInfinity. s değerinden büyük geçerli bir sayıysa, result olurPositiveInfinity. Bu parametre başlatılmamış olarak 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ümlerinde, temsil etmek için çok büyük olan değerler IEEE 754 belirtiminin gerektirdiği şekilde veya PositiveInfinity değerine yuvarlanirNegativeInfinity. .NET Framework de dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan bir değeri ayrıştırmak hatayla sonuçlandı.

Şunlara uygulanır

TryParse(String, Double)

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

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

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 bir sayı içeren 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ı eşdeğerini veya dönüştürme başarısız olursa sıfırı içerir. Parametre s geçerli biçimde bir sayıysa null veya Empty değilse dönüştürme başarısız olur. Double.MinValue değerinden küçük veya s değerinden büyük bir sayıyı temsil eden .NET Framework'te de başarısız olur. Bu parametre başlatılmamış olarak 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.

Ö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 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ümlerinde, temsil etmek için çok büyük olan değerler IEEE 754 belirtiminin gerektirdiği şekilde veya PositiveInfinity değerine yuvarlanirNegativeInfinity. .NET Framework de dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan 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ı gösteren 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 durumunda FormatException test etmek için s özel durum işleme kullanma gereksinimini ortadan kaldırır.

s parametresi geçerli kültürün NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbolveya NumberFormatInfo.NaNSymbol simgesini içerebilir. Bu dize karşılaştırması .NET Core 3.0 ve sonraki sürümlerde büyük/küçük harfe duyarlı değildir, ancak .NET Framework dahil önceki sürümlerde büyük/küçük harfe duyarlıdır. s Parametresi, formun bir dizesi de olabilir:

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

Köşeli ayraç içindeki öğeler isteğe bağlıdır. Aşağıdaki tabloda her öğe açıklanmaktadır.

Öğe Açıklama
Ws Bir dizi boşluk karakteri.
imza Negatif işaret veya pozitif işaret simgesi.
integral-digits Sayının tamsayı kısmını belirten 0 ile 9 arasında bir dizi sayısal karakter. Kesirli basamaklar varsa tam sayı-basamaklar eksik olabilir.
, Kültüre özgü grup ayırıcı simgesi.
. Kültüre özgü ondalık nokta simgesi.
kesirli basamaklar Sayının kesirli kısmını belirten 0 ile 9 arasında bir dizi sayısal karakter.
E Üstel (bilimsel) gösterimi gösteren büyük veya küçük harfli 'e' karakteri.
üstel basamaklar Üs belirten 0 ile 9 arasında bir dizi sayısal karakter.

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

s parametresi ve NumberStyles.Float bayraklarının NumberStyles.AllowThousands bir bileşimi kullanılarak yorumlanır. Başka bir deyişle boşluk ve binlik ayırıcılara izin verilir, ancak para birimi simgeleri kullanılamaz. 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öntem aşırı yüklemesini Double.TryParse(String, NumberStyles, IFormatProvider, Double) kullanın.

Normalde yöntemini çağırarak Double.TryParse oluşturulan bir dize geçirirseniz Double.ToString özgün Double değer döndürülür. Ancak, duyarlık kaybı nedeniyle değerler eşit olmayabilir. Buna ek olarak, dize gösterimini Double.MinValue ayrıştırmaya çalışmak veya Double.MaxValue gidiş dönüş başarısız olur. .NET Framework'te bir OverflowExceptionoluşturur. .NET Core 3.0 ve sonraki sürümlerinde, öğesini 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 çizim 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'te, veri türünün aralığının dışındaysas, Double yöntemi bir TryParse(String, Double)oluşturur.OverflowException

.NET Core 3.0 ve sonraki sürümlerde, veri türünün aralığı s dışında olduğunda Double özel durum oluşturulur. Çoğu durumdaTryParse(String, Double), yöntemi veya Double.PositiveInfinitysonucunu Double.NegativeInfinity hesaplar. Ancak, en yüksek veya en düşük değerlerine pozitif veya negatif sonsuza 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.MaxValuesonucunu Double.MinValue 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
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 hatada tanımlanmamış bir değeri içerir.

Döndürülenler

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

Şunlara uygulanır

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
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ılma alanı.

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<Byte>, NumberStyles, IFormatProvider, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
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 hatada tanımlanmamış bir değeri içerir.

Döndürülenler

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

Şunlara uygulanır

TryParse(ReadOnlySpan<Byte>, Double)

Kaynak:
Double.cs
Kaynak:
Double.cs
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 simgenin utf8Text eşdeğeri bir çift duyarlıklı kayan nokta numarası 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ılmamış olarak 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
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üş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir.

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

style
NumberStyles

İzin verilen biçimini NumberStylesgösteren bit düzeyinde bir değer bileşimis. 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ı olursa, içinde bulunan sayısal değer veya simgenin çift duyarlıklı kayan nokta sayı eşdeğeri içerir s. Dönüştürme başarısız olursa sıfır içerir. parametresi sboş bir karakter aralığıysa null veya ile styleuyumlu bir biçimdeki bir sayı değilse dönüştürme başarısız olur. s değerinden küçük geçerli bir sayıysa, result olurNegativeInfinity. s değerinden büyük geçerli bir sayıysa, result olurPositiveInfinity. Bu parametre başlatılmamış olarak 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ümlerinde, temsil etmek için çok büyük olan değerler IEEE 754 belirtiminin gerektirdiği şekilde veya PositiveInfinity değerine yuvarlanirNegativeInfinity. .NET Framework de dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan bir değeri ayrıştırmak hatayla sonuçlandı.

Şunlara uygulanır

TryParse(String, NumberStyles, IFormatProvider, Double)

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

Belirli bir 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üş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir.

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 bir sayı içeren dize.

style
NumberStyles

İzin verilen biçimini NumberStylesgösteren bit düzeyinde bir değer bileşimis. 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 eşdeğeri olan çift duyarlıklı kayan noktalı sayı içerir; dönüştürme başarılı olursa sıfır veya dönüştürme başarısız olursa sıfır olur. Parametre s ile uyumlu nullveya Empty biçiminde değilse veya sabit listesi sabitlerinin style geçerli bir bileşimi değilse style dönüştürme başarısız olurNumberStyles. SByte.MinValue değerinden küçük veya s değerinden büyük bir sayıyı temsil eden .NET Framework'te de başarısız olur. Bu parametre başlatılmamış olarak 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-

style AllowHexSpecifier 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ümlerinde, temsil etmek için çok büyük olan değerler IEEE 754 belirtiminin gerektirdiği şekilde veya PositiveInfinity değerine yuvarlanirNegativeInfinity. .NET Framework de dahil olmak üzere önceki sürümlerde, temsil etmek için çok büyük olan bir değeri ayrıştırmak hatayla sonuçlandı.

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 parametresi sıfır olarak ayarlanır. Bu, geçersiz olan ve başarıyla ayrıştırılamayan bir durumunda FormatException test etmek için s özel durum işleme kullanma gereksinimini ortadan kaldırır.

parametresi, style 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 NumberFormatInfo.PositiveInfinitySymbolkültür için , NumberFormatInfo.NegativeInfinitySymbolveya NumberFormatInfo.NaNSymbol simgesi içerebilirprovider. Bu dize karşılaştırması .NET Core 3.0 ve sonraki sürümlerde büyük/küçük harfe duyarlı değildir, ancak .NET Framework dahil önceki sürümlerde büyük/küçük harfe duyarlıdır. Ayrıca, 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ç ([ ve ]) içindeki öğeler isteğe bağlıdır. Aşağıdaki tabloda her öğe açıklanmaktadır.

Öğe Açıklama
Ws İsteğe bağlı boşluk. Bayrağı içeriyorsas, başında boşluk görüntülenebilir.styleNumberStyles.AllowLeadingWhite bayrağını içeriyorsa s sonunda styleNumberStyles.AllowTrailingWhite görüntülenebilir.
$ Kültüre özgü para birimi simgesi. Dizedeki konumu, parametresinin NumberFormatInfo.CurrencyNegativePattern yöntemi NumberFormatInfo.CurrencyPositivePattern tarafından döndürülen nesnenin NumberFormatInfo veya IFormatProvider.GetFormat özellikleri provider tarafından tanımlanır. Bayrağı içeriyorsa s para birimi simgesi içinde styleNumberStyles.AllowCurrencySymbol görüntülenebilir.
imza İsteğe bağlı bir işaret. İşaret, bayrağın eklenip eklenmediğinin başında ve bayrağın eklenip eklenmediğinin sstyleNumberStyles.AllowLeadingSign sonunda görünebilir.sstyleNumberStyles.AllowTrailingSign Parantezler, bayrağı içeriyorsa s negatif bir değeri style belirtmek için içinde kullanılabilirNumberStyles.AllowParentheses.
integral-digits Sayının tamsayı kısmını belirten 0 ile 9 arasında bir basamak dizisi. Kesirli basamaklar varsa tam sayı-basamaklar eksik olabilir.
, Kültüre özgü binlik ayırıcı simgesi. Bayrağı içeriyorsa geçerli kültürün s binlik ayırıcı simgesi içinde görüntülenebilir.styleNumberStyles.AllowThousands
. Kültüre özgü ondalık nokta simgesi. Bayrağı içeriyorsa geçerli kültürün s ondalık noktası simgesi içinde styleNumberStyles.AllowDecimalPoint görüntülenebilir.
kesirli basamaklar Sayının kesirli kısmını belirten 0 ile 9 arasında bir basamak dizisi. Bayrağı içeriyorsa s kesirli basamaklar içinde styleNumberStyles.AllowDecimalPoint görüntülenebilir.
e Üstel gösterim kullanarak bir sayıyı temsil ettiğini gösteren s e veya E karakteri. stil s bayrağı içeriyorsa parametresi üstel gösterimde bir sayıyı NumberStyles.AllowExponent temsil edebilir.
üstel basamaklar Üs belirten 0 ile 9 arasında bir basamak 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 öğeleri denetler. Aşağıdaki tablo, tek tek NumberStyles bayrakların içinde sbulunabilecek öğeleri nasıl etkilediğini gösterir.

NumberStyles değeri Basamaklara ek olarak s içinde izin verilen öğeler
None Yalnızca integral-digits öğesi.
AllowDecimalPoint . ve kesirli basamaklar öğeleri.
AllowExponent parametresi üstel s gösterim 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österimde dizeleri başarıyla ayrıştırmak için ek bayraklar gerekir.
AllowLeadingWhite başındaki s öğesi.
AllowTrailingWhite sonundaki s öğesi.
AllowLeadingSign başındaki s öğesi.
AllowTrailingSign sonundaki s öğesi.
AllowParentheses Sayısal değeri kapsayan parantez biçimindeki sign öğesi.
AllowThousands öğesi.
AllowCurrencySymbol $ öğesi.
Currency Tüm. s parametresi onaltılık bir sayıyı veya üstel gösterimdeki bir sayıyı temsil edemez.
Float başındaki veya sonundaki s öğesi, öğesinin başında simzalar. parametresi üstel s gösterim de kullanabilir.
Number ws, sign, binler ayırıcısı (,) 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 IFormatProvider nesnesi gibi bir NumberFormatInfoCultureInfo uygulamadır. parametresi, provider ayrıştırmada kullanılan kültüre özgü bilgiler sağlar. ise provider veya bir null nesne alınamıyorsaNumberFormatInfo, geçerli kültüre ilişkin biçim bilgileri kullanılır.

Parametre s sayısal bir değerse null 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.TryParse oluşturulan bir dize geçirirseniz Double.ToString özgün Double değer döndürülür. Ancak, duyarlık kaybı nedeniyle değerler eşit olmayabilir. Buna ek olarak, dize gösterimini Double.MinValue ayrıştırmaya çalışmak veya Double.MaxValue gidiş dönüş başarısız olur. .NET Framework'te bir OverflowExceptionoluşturur. .NET Core 3.0 ve sonraki sürümlerinde, öğesini 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 çizim 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'te, veri türünün aralığının dışındaysas, Double yöntemi bir Double.TryParse(String, NumberStyles, IFormatProvider, Double)oluşturur.OverflowException

.NET Core 3.0 ve sonraki sürümlerde, veri türünün aralığı s dışında olduğunda Double özel durum oluşturulur. Çoğu durumdaDouble.TryParse(String, NumberStyles, IFormatProvider, Double), yöntemi veya Double.PositiveInfinitysonucunu Double.NegativeInfinity hesaplar. Ancak, en yüksek veya en düşük değerlerine pozitif veya negatif sonsuza 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.MaxValuesonucunu Double.MinValue 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ı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