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
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
s
hakkı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. s
Double.MaxValuedeğerinden büyük geçerli bir sayıysa result
PositiveInfinity. 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. 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.
s
iç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, s
Double 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, s
Double 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.
- Parse(String)
- ToString()
- .NET'da 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
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
utf8Text
hakkı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
s
hakkı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 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
utf8Text
içinde bulunabilecek sayı stillerinin bit düzeyinde birleşimi.
- provider
- IFormatProvider
utf8Text
hakkı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
s
izin verilen biçimini gösteren NumberStyles değerlerinin bit düzeyinde birleşimi. Belirtilmesi gereken tipik bir değer FloatAllowThousandsile birleştirilir.
- provider
- IFormatProvider
s
hakkı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, s
iç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 style
ile uyumlu bir biçimdeki bir sayı değilse dönüştürme başarısız olur. s
Double.MaxValuedeğerinden büyük geçerli bir sayıysa result
PositiveInfinity. 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
s
izin verilen biçimini gösteren NumberStyles değerlerinin bit düzeyinde birleşimi. Belirtilmesi gereken tipik bir değer FloatAllowThousandsile birleştirilir.
- provider
- IFormatProvider
s
hakkında kültüre özgü biçimlendirme bilgileri sağlayan bir IFormatProvider.
- result
- Double
Bu yöntem döndürdüğünde, s
iç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 style
ile 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
Ö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, provider
tarafından belirtilen kültür için NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbolveya NumberFormatInfo.NaNSymbol içerebilir. Ayrıca, style
değ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, style NumberStyles.AllowCurrencySymbol bayrağı içeriyorsa s görünebilir. |
imzalama | İsteğe bağlı bir işaret. İşaret, style NumberStyles.AllowLeadingSign bayrağı içeriyorsa s başında ve style NumberStyles.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, style NumberStyles.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 | |
AllowExponent |
s parametresi üstel gösterimi de kullanabilir. Bu bayrak tek başına, E |
AllowLeadingWhite |
s başındaki ws öğesi. |
AllowTrailingWhite |
s sonundaki ws öğesi. |
AllowLeadingSign |
s başındaki sign öğesi. |
AllowTrailingSign |
s sonundaki 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 | 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, s
Double 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, s
Double 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