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

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 PositiveInfinity veya NegativeInfinity yuvarlanır. .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

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

shakkında kültüre özgü biçimlendirme bilgileri sağlayan nesne.

result
Double

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

Döndürülenler

s başarıyla ayrıştırılıp ayrıştırılamadığını true; aksi takdirde, 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üş 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 s parametresinde bulunan sayısal değerin veya simgenin çift duyarlıklı kayan nokta numarası eşdeğerini veya dönüştürme başarısız olursa sıfırı içerir. s parametresi null veya boşsa dönüştürme başarısız olur. Double.MinValue'den küçük geçerli bir sayıysa . s Double.MaxValuedeğerinden büyük geçerli bir sayıysa resultPositiveInfinity. Bu parametre başlatılmamış olarak geçirilir; başlangıçta result sağlanan tüm değerlerin üzerine yazılır.

Döndürülenler

s başarıyla dönüştürüldüyse true; 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 PositiveInfinity veya NegativeInfinity yuvarlanır. .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

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 s parametresinin çift duyarlıklı kayan nokta numarasını veya dönüştürme başarısız olursa sıfırı içerir. s parametresi null veya Empty ya da geçerli biçimde bir sayı değilse dönüştürme başarısız olur. Double.MinValue veya Double.MaxValue'den büyük bir sayıyı temsil ederse.NET Framework ve .NET Core 2.2 ve önceki sürümlerinde de başarısız olur. Bu parametre başlatılmamış olarak geçirilir; başlangıçta result sağlanan tüm değerlerin üzerine yazılır.

Döndürülenler

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

Örnekler

Aşağıdaki örnek, sayısal değerlerin dize gösterimlerini Double değerlere dönüştürmek için TryParse(String, 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 PositiveInfinity veya NegativeInfinity yuvarlanır. .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 Double.Parse(String) yönteminden farklıdır. s geçersiz olması ve başarıyla ayrıştırılamaması durumunda bir FormatException test etmek için özel durum işleme kullanma gereksinimini ortadan kaldırır.

s parametresi geçerli kültürün NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, NumberFormatInfo.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[.[ 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.
imzalama 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 basamak 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 basamak Ü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, NumberStyles.Float ve NumberStyles.AllowThousands bayraklarının 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. siçinde bulunabilecek öğeleri (para birimi simgeleri, binlik ayırıcılar ve boşluk gibi) açıkça tanımlamak için Double.TryParse(String, NumberStyles, IFormatProvider, Double) yöntemi aşırı yüklemesini kullanın.

s parametresi, geçerli sistem kültürü için başlatılan bir NumberFormatInfo nesnesindeki 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 Double.TryParse(String, NumberStyles, IFormatProvider, Double) yöntemi aşırı yüklemesini kullanın.

Normalde, Double.TryParse yöntemini Double.ToString yöntemi çağrılarak oluşturulan bir dize geçirirseniz özgün Double değeri döndürülür. Ancak, duyarlık kaybı nedeniyle değerler eşit olmayabilir. Ayrıca, Double.MinValue veya Double.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ümlerinde bir OverflowExceptionoluşturur. .NET Core 3.0 ve sonraki sürümlerinde, MinValue ayrıştırmaya çalıştığınızda Double.NegativeInfinity veya MaxValueayrıştırmaya çalıştığınızda Double.PositiveInfinity döndürür. 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 ve .NET Core 2.2 ve önceki sürümlerinde, sDouble veri türünün aralığının dışındaysa, TryParse(String, Double) yöntemi bir OverflowExceptionoluşturur.

.NET Core 3.0 ve sonraki sürümlerinde, sDouble veri türünün aralığının dışında olduğunda özel durum oluşturulur. Çoğu durumda, TryParse(String, Double) yöntemi Double.PositiveInfinity veya Double.NegativeInfinitysonucunu hesaplar. Ancak, Double 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 kümesi vardır. Bu gibi durumlarda yöntemi, Double.MaxValue veya Double.MinValuesonucunu hesaplar.

Ayrıştırma işlemi sırasında s parametresinde 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

utf8Texthakkında kültüre özgü biçimlendirme bilgileri sağlayan nesne.

result
Double

Sonuç olarak, utf8Text başarıyla ayrıştırma veya hatada tanımlanmamış bir değerin sonucunu içerir.

Döndürülenler

utf8Text başarıyla ayrıştırılıp ayrıştırılamadığını true; aksi takdirde, false.

Şunlara uygulanır

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ılma alanı.

provider
IFormatProvider

shakkında kültüre özgü biçimlendirme bilgileri sağlayan nesne.

result
Double

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

Döndürülenler

s başarıyla ayrıştırılıp ayrıştırılamadığını true; 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

utf8Textiçinde bulunabilecek sayı stillerinin bit düzeyinde birleşimi.

provider
IFormatProvider

utf8Texthakkında kültüre özgü biçimlendirme bilgileri sağlayan nesne.

result
Double

Sonuç olarak, utf8Text başarıyla ayrıştırma veya hatada tanımlanmamış bir değerin sonucunu içerir.

Döndürülenler

utf8Text başarıyla ayrıştırılıp ayrıştırılamadığını true; 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ürmenin başarılı olup olmadığını utf8Text sayısal değerin veya simgenin eşdeğeri çift duyarlıklı kayan noktalı sayı veya dönüştürme başarısız olursa sıfır içerir. utf8Text Empty veya geçerli bir biçimde değilse 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

utf8Text başarıyla dönüştürüldüyse true; 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üş 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);
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

sizin verilen biçimini gösteren NumberStyles değerlerinin bit düzeyinde birleşimi. Belirtilmesi gereken tipik bir değer FloatAllowThousandsile birleştirilir.

provider
IFormatProvider

shakkında kü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, siçinde yer alan sayısal değerin veya simgenin çift duyarlıklı kayan nokta sayı eşdeğerini içerir. Dönüştürme başarısız olursa sıfır içerir. s parametresi null, boş bir karakter aralığı ise veya styleile uyumlu bir biçimdeki bir sayı değilse dönüştürme başarısız olur. Double.MinValue'den küçük geçerli bir sayıysa . s Double.MaxValuedeğerinden büyük geçerli bir sayıysa resultPositiveInfinity. Bu parametre başlatılmamış olarak geçirilir; başlangıçta result sağlanan tüm değerlerin üzerine yazılır.

Döndürülenler

s başarıyla dönüştürüldüyse true; 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 PositiveInfinity veya NegativeInfinity yuvarlanır. .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

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

sizin verilen biçimini gösteren NumberStyles değerlerinin bit düzeyinde birleşimi. Belirtilmesi gereken tipik bir değer FloatAllowThousandsile birleştirilir.

provider
IFormatProvider

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

result
Double

Bu yöntem döndürdüğünde, siçinde bulunan sayısal değerin veya simgenin çift duyarlıklı kayan noktalı sayı eşdeğerini, dönüştürmenin başarılı olup olmadığını veya dönüştürme başarısız olursa sıfırı içerir. s parametresi null veya Empty ya da styleile uyumlu bir biçimde değilse veya style geçerli bir NumberStyles sabit listesi bileşimi değilse dönüştürme başarısız olur. s SByte.MinValue veya SByte.MaxValue'den büyük bir sayıyı temsil ederse.NET Framework veya .NET Core 2.2 ve önceki sürümlerde de başarısız olur. Bu parametre başlatılmamış olarak geçirilir; başlangıçta result sağlanan tüm değerlerin üzerine yazılır.

Döndürülenler

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

Özel durumlar

style NumberStyles bir 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 Double.TryParse(String, NumberStyles, IFormatProvider, Double) yönteminin kullanımını 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 PositiveInfinity veya NegativeInfinity yuvarlanır. .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 Parse(String, NumberStyles, IFormatProvider) yöntemine 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 true ve result parametresi dönüştürmenin sonucuna ayarlanır. Dönüştürme başarısız olursa, dönüş değeri false ve result parametresi sıfır olarak ayarlanır. Bu, s geçersiz olması ve başarıyla ayrıştırılamaması durumunda bir FormatException test etmek için özel durum işleme kullanma gereksinimini ortadan kaldırır.

style parametresi, ayrıştırma işleminin başarılı olması için s parametresinin izin verilebilen biçimini tanımlar. NumberStyles numaralandırmasından bit bayraklarının birleşimi olmalıdır. Aşağıdaki NumberStyles üyeleri desteklenmez:

s parametresi, providertarafından belirtilen kültür için NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbolveya NumberFormatInfo.NaNSymbol içerebilir. Ayrıca, styledeğerine bağlı olarak s 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. style NumberStyles.AllowLeadingWhite bayrağı içeriyorsa boşluk s başında görüntülenebilir. style NumberStyles.AllowTrailingWhite bayrağı içeriyorsa, s sonunda görüntülenebilir.
$ Kültüre özgü para birimi simgesi. Dizedeki konumu, provider parametresinin IFormatProvider.GetFormat yöntemi tarafından döndürülen NumberFormatInfo nesnesinin NumberFormatInfo.CurrencyNegativePattern veya NumberFormatInfo.CurrencyPositivePattern özellikleri tarafından tanımlanır. para birimi simgesi, styleNumberStyles.AllowCurrencySymbol bayrağı içeriyorsa s görünebilir.
imzalama İsteğe bağlı bir işaret. İşaret, styleNumberStyles.AllowLeadingSign bayrağı içeriyorsa s başında ve styleNumberStyles.AllowTrailingSign bayrağı içeriyorsa s sonunda görüntülenebilir. style NumberStyles.AllowParentheses bayrağı içeriyorsa, negatif bir değeri belirtmek için s'de parantezler kullanılabilir.
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. geçerli kültürün binlik ayırıcı simgesi, styleNumberStyles.AllowThousands bayrağı içeriyorsa s görünebilir.
. Kültüre özgü ondalık nokta simgesi. style NumberStyles.AllowDecimalPoint bayrağı içeriyorsa geçerli kültürün ondalık noktası simgesi s görünebilir.
Kesirli basamak Sayının kesirli kısmını belirten 0 ile 9 arasında bir basamak dizisi. style NumberStyles.AllowDecimalPoint bayrağı içeriyorsa kesirli basamaklar s görünebilir.
e e veya E karakteri, s üstel gösterim kullanarak bir sayıyı temsil edebilir. stilde NumberStyles.AllowExponent bayrağı varsa, s parametresi bir sayıyı üstel gösterimde temsil edebilir.
üstel basamak Üs belirten 0 ile 9 arasında bir basamak dizisi.

Not

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

Yalnızca basamak içeren bir dize (NumberStyles.None stiline karşılık gelir) Double türü aralığındaysa her zaman başarıyla ayrıştırılır. Kalan System.Globalization.NumberStyles üyeleri, giriş dizesinde bulunması gerekmeyen öğeleri denetler. Aşağıdaki tabloda, tek tek NumberStyles bayraklarının s'de mevcut olabilecek öğeleri nasıl etkilediği gösterilir.

NumberStyles değeri Basamaklara ek olarak s içinde izin verilen öğeler
None Yalnızca integral-digits öğesi.
AllowDecimalPoint . Öğeleri kesirli basamaklar ve .
AllowExponent s parametresi üstel gösterimi de kullanabilir. Bu bayrak tek başına, Eüstel basamaklarintegral-digits 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 sbaşındaki ws öğesi.
AllowTrailingWhite ssonundaki ws öğesi.
AllowLeadingSign sbaşındaki sign öğesi.
AllowTrailingSign ssonundaki sign öğesi.
AllowParentheses işareti, sayısal değeri kapsayan parantez biçiminde öğesidir.
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 ws öğesi, başında ve . simgesi. s parametresi üstel gösterimi de kullanabilir.
Number ws, sign, binler ayırıcısı (,), ve ondalık ayırıcı (.) öğeleri.
Any s dışındaki tüm stiller onaltılık bir sayıyı temsil edemez.

provider parametresi, NumberFormatInfo veya CultureInfo nesnesi gibi IFormatProvider bir uygulamadır. provider parametresi, ayrıştırmada kullanılan kültüre özgü bilgiler sağlar. provider null veya NumberFormatInfo nesnesi alınamıyorsa, geçerli kültüre ilişkin biçim bilgileri kullanılır.

s parametresi sayısal bir değer null veya değilse dönüştürme başarısız olur, provider parametresi bir NumberFormatInfo nesnesi vermez veya style parametresi NumberStyles sabit listesindeki bit bayraklarının bir bileşimi değildir.

Normalde, Double.TryParse yöntemini Double.ToString yöntemi çağrılarak oluşturulan bir dize geçirirseniz özgün Double değeri döndürülür. Ancak, duyarlık kaybı nedeniyle değerler eşit olmayabilir. Ayrıca, Double.MinValue veya Double.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ümlerinde bir OverflowExceptionoluşturur. .NET Core 3.0 ve sonraki sürümlerinde, MinValue ayrıştırmaya çalıştığınızda Double.NegativeInfinity veya MaxValueayrıştırmaya çalıştığınızda Double.PositiveInfinity döndürür. 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 ve .NET Core 2.2 ve önceki sürümlerinde, sDouble veri türünün aralığının dışındaysa, Double.TryParse(String, NumberStyles, IFormatProvider, Double) yöntemi bir OverflowExceptionoluşturur.

.NET Core 3.0 ve sonraki sürümlerinde, sDouble veri türünün aralığının dışında olduğunda özel durum oluşturulur. Çoğu durumda, Double.TryParse(String, NumberStyles, IFormatProvider, Double) yöntemi Double.PositiveInfinity veya Double.NegativeInfinitysonucunu hesaplar. Ancak, Double 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 kümesi vardır. Bu gibi durumlarda yöntemi, Double.MaxValue veya Double.MinValuesonucunu hesaplar.

Ayrıştırma işlemi sırasında s 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ı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.

  • ToString()
  • .NET'da Sayısal Dizeleri Ayrıştırma

Şunlara uygulanır