Double.TryParse Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.
- Parse(String)
- ToString()
- .NET'te Sayısal Dizeleri Ayrıştırma
- Örneği: .NET Core WinForms Biçimlendirme Yardımcı Programı (C#)
- Örneği: .NET Core WinForms Biçimlendirme Yardımcı Programı (Visual Basic)
Ş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
Ö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.