Double.TryParse Metódus

Definíció

Egy szám sztringképét dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

Túlterhelések

Name Description
TryParse(String, IFormatProvider, Double)

Megpróbál egy sztringet egy értékbe elemezni.

TryParse(ReadOnlySpan<Char>, Double)

Egy adott stílusban és kultúrában megadott formátumban lévő szám span-ábrázolását dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

TryParse(String, Double)

Egy szám sztringképét dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Egy karaktertartományt próbál elemezni egy értékben.

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

Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben.

TryParse(ReadOnlySpan<Byte>, Double)

Egy szám sztringképét tartalmazó UTF-8 karaktert próbál átalakítani a kettős pontosságú lebegőpontos számmal egyenértékűre.

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

Egy adott stílusban és kultúrában megadott formátumú szám sztring-ábrázolását tartalmazó karakterfedést alakít át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

TryParse(String, NumberStyles, IFormatProvider, Double)

Egy szám sztring-ábrázolását egy megadott stílusban és kultúraspecifikus formátumban alakítja át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

Megjegyzések

A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.

TryParse(String, IFormatProvider, Double)

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Megpróbál egy sztringet egy értékbe elemezni.

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

Paraméterek

s
String

Az elemezni kívánt sztring.

provider
IFormatProvider

Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról s.

result
Double

Amikor ez a metódus visszatér, a sikeres elemzés s eredményét vagy egy nem definiált hibát tartalmaz.

Válaszok

trueha s sikeresen elemezték; ellenkező esetben. false

A következőre érvényes:

TryParse(ReadOnlySpan<Char>, Double)

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy adott stílusban és kultúrában megadott formátumban lévő szám span-ábrázolását dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

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

Paraméterek

s
ReadOnlySpan<Char>

Az átalakítandó szám sztring-ábrázolását tartalmazó karakterfedés.

result
Double

Ha ez a metódus visszatér, a paraméterben s található numerikus érték vagy szimbólum dupla pontosságú lebegőpontos számát tartalmazza, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás sikertelen, ha a s paraméter üres null . Ha s a Double.MinValue értéknél kisebb érvényes szám, result akkor az .NegativeInfinity Ha s a Double.MaxValue értéknél nagyobb érvényes szám, result akkor az .PositiveInfinity Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.

Válaszok

trueha s sikeresen konvertálták; ellenkező esetben. false

Megjegyzések

A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.

A következőre érvényes:

TryParse(String, Double)

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy szám sztringképét dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

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

Paraméterek

s
String

Egy konvertálni kívánt számot tartalmazó sztring.

result
Double

Ha ez a metódus visszatér, a paraméter dupla pontosságú lebegőpontos számát s tartalmazza, ha az átalakítás sikeres volt, vagy nullát, ha az átalakítás sikertelen volt. Az átalakítás sikertelen, ha a s paraméter null érvényes formátumú vagy Empty nem szám. A .NET-keretrendszeren is meghiúsul, ha sDouble.MinValue vagy nagyobb, mint Double.MaxValue. Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.

Válaszok

trueha s sikeresen konvertálták; ellenkező esetben. false

Példák

Az alábbi példa a TryParse(String, Double) numerikus értékek Double sztringreprezentációit értékké alakítja. Feltételezi, hogy en-US a jelenlegi kultúra.

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

Megjegyzések

A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.

Ez a túlterhelés eltér a Double.Parse(String) metódustól azáltal, hogy egy logikai értéket ad vissza, amely azt jelzi, hogy az elemzési művelet sikeres volt-e az elemzési számérték visszaadása helyett. Ez szükségtelenné teszi, hogy FormatException kivételkezeléssel teszteljen egy s érvénytelen és nem elemezhető eseményt.

A s paraméter az aktuális kultúra szimbólumát NumberFormatInfo.PositiveInfinitySymbolvagy NumberFormatInfo.NegativeInfinitySymbol szimbólumát NumberFormatInfo.NaNSymbolis tartalmazhatja. Ez a sztring-összehasonlítás nem érzéketlen a .NET Core 3.0-s és újabb verzióiban, de a korábbi verziókban, például a .NET-keretrendszerben megkülönbözteti a kis- és nagybetűket. A s paraméter az űrlap sztringje is lehet:

[ws][jel][integral-digits,]integral-digits[.[ törtjegyek]][e[jel]exponenciális-számjegyek][ws]

A szögletes zárójelek elemei nem kötelezőek. Az alábbi táblázat az egyes elemeket ismerteti.

Elem Leírás
Ws Üres karakterek sorozata.
jel Negatív jel vagy pozitív jelszimbólum.
integráljegyek 0 és 9 közötti számkarakterek sorozata, amelyek a szám szerves részét határozzák meg. Az integráljegyek hiányoznak, ha törtjegyek vannak.
, Kultúraspecifikus csoportelválasztó szimbólum.
. Kultúraspecifikus tizedesjel.
törtjegyek 0 és 9 közötti számkarakterek sorozata, amelyek a szám törtrészét határozzák meg.
E Az "e" nagybetűs vagy kisbetűs karakter, amely exponenciális (tudományos) jelölést jelez.
exponenciális számjegyek 0 és 9 közötti számkarakterek sorozata, amelyek kitevőt adnak meg.

A numerikus formátumokról további információt a Formázástípusok című témakörben talál.

A s paramétert a rendszer a és NumberStyles.Float a NumberStyles.AllowThousands jelzők kombinációjával értelmezi. Ez azt jelenti, hogy szabad terület és több ezer elválasztó engedélyezett, de a pénznemszimbólumok nem. A metódus túlterheltségével explicit módon definiálhatja saz elemeket (például pénznemszimbólumokat, ezres elválasztójeleket és szóközöket).Double.TryParse(String, NumberStyles, IFormatProvider, Double)

A s paramétert a rendszer az aktuális rendszerkultúra inicializált objektumának formázási információi NumberFormatInfo alapján elemzi. További információért lásd NumberFormatInfo.CurrentInfo. Ha egy sztringet más megadott kultúra formázási adataival szeretne elemezni, használja a metódus túlterhelését Double.TryParse(String, NumberStyles, IFormatProvider, Double) .

Általában, ha a Double.TryParse metódus meghívásával létrehozott sztringet ad át a Double.ToString metódusnak, az eredeti Double érték lesz visszaadva. A pontosság elvesztése miatt azonban előfordulhat, hogy az értékek nem lesznek egyenlők. Ezen kívül megpróbálhatja elemezni a sztring megjelenítését, Double.MinValue vagy Double.MaxValue nem sikerül az oda-vissza út. A .NET-keretrendszeren egy OverflowException dob. .NET Core 3.0-s és újabb verzióiban Double.NegativeInfinity ad vissza, ha MinValue vagy Double.PositiveInfinity próbál elemezni MaxValue. Az alábbi példa egy illusztrációt tartalmaz.

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.

Ha .NET keretrendszerben a s kívül esik a Double adattípus tartományán, a TryParse(String, Double) metódus OverflowException.

A .NET Core 3.0-s és újabb verzióiban nem történik kivétel, ha s kívül esik a Double adattípus tartományán. A legtöbb esetben a metódus kiszámítja TryParse(String, Double) az eredmény vagy Double.PositiveInfinityDouble.NegativeInfinitya . Van azonban egy kis értékkészlet, amely közelebb van a pozitív vagy negatív végtelennél nagyobb maximális vagy minimális értékekhez Double . Ezekben az esetekben a metódus kiszámítja az eredmény vagy Double.MaxValueDouble.MinValuea .

Ha egy elemzési művelet során egy paraméter elválasztójelet észlel s , és a tizedesjelek és a csoportelválasztók megegyeznek, az elemzési művelet feltételezi, hogy az elválasztó nem csoportelválasztó, hanem tizedes elválasztó. Az elválasztókkal kapcsolatos további információkért lásd CurrencyDecimalSeparator: , NumberDecimalSeparator, CurrencyGroupSeparator, és NumberGroupSeparator.

Lásd még

A következőre érvényes:

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben.

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

Paraméterek

utf8Text
ReadOnlySpan<Byte>

Az elemezni kívánt UTF-8 karakter szélessége.

provider
IFormatProvider

Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról utf8Text.

result
Double

Visszatéréskor a sikeres elemzés utf8Text eredményét vagy a hiba egy nem definiált értékét tartalmazza.

Válaszok

trueha utf8Text sikeresen elemezték; ellenkező esetben. false

A következőre érvényes:

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy karaktertartományt próbál elemezni egy értékben.

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

Paraméterek

s
ReadOnlySpan<Char>

Az elemezni kívánt karakterek száma.

provider
IFormatProvider

Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról s.

result
Double

Amikor ez a metódus visszatér, a sikeres elemzés seredményét vagy a hiba egy nem definiált értékét tartalmazza.

Válaszok

trueha s sikeresen elemezték; ellenkező esetben. false

A következőre érvényes:

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

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben.

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

Paraméterek

utf8Text
ReadOnlySpan<Byte>

Az elemezni kívánt UTF-8 karakter szélessége.

style
NumberStyles

A számstílusok bitenkénti kombinációja, amely jelen lehet a fájlban utf8Text.

provider
IFormatProvider

Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról utf8Text.

result
Double

Visszatéréskor a sikeres elemzés utf8Text eredményét vagy a hiba egy nem definiált értékét tartalmazza.

Válaszok

trueha utf8Text sikeresen elemezték; ellenkező esetben. false

A következőre érvényes:

TryParse(ReadOnlySpan<Byte>, Double)

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy szám sztringképét tartalmazó UTF-8 karaktert próbál átalakítani a kettős pontosságú lebegőpontos számmal egyenértékűre.

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

Paraméterek

utf8Text
ReadOnlySpan<Byte>

Írásvédett UTF-8 karaktertartomány, amely tartalmazza az átalakítandó számot.

result
Double

Ha ez a metódus visszatér, a számérték vagy szimbólum utf8Text dupla pontosságú lebegőpontos számát tartalmazza, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás sikertelen, ha a utf8TextEmpty formátum érvényes vagy nem. Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott érték felülíródik.

Válaszok

trueha utf8Text sikeresen konvertálták; ellenkező esetben. false

A következőre érvényes:

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

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy adott stílusban és kultúrában megadott formátumú szám sztring-ábrázolását tartalmazó karakterfedést alakít át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

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

Paraméterek

s
ReadOnlySpan<Char>

A konvertálni kívánt számot tartalmazó írásvédett karaktertartomány.

style
NumberStyles

Az értékek bitenkénti kombinációja NumberStyles , amely a megengedett formátumot sjelzi. A megadható tipikus érték össze van Float adva a következővel AllowThousands: .

provider
IFormatProvider

Egy objektum, amely a kultúraspecifikus formázási sinformációkat tartalmazza.

result
Double

Ha ez a metódus eredményül ad vissza, és az átalakítás sikeres volt, a számértéknek vagy a szimbólumnak smegfelelő dupla pontosságú lebegőpontos számot tartalmaz. Nulla értéket tartalmaz, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a s paraméter nullüres karaktersáv, vagy nem megfelelő styleformátumú szám. Ha s a Double.MinValue értéknél kisebb érvényes szám, result akkor az .NegativeInfinity Ha s a Double.MaxValue értéknél nagyobb érvényes szám, result akkor az .PositiveInfinity Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.

Válaszok

trueha s sikeresen konvertálták; ellenkező esetben. false

Megjegyzések

A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.

A következőre érvényes:

TryParse(String, NumberStyles, IFormatProvider, Double)

Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs
Forrás:
Double.cs

Egy szám sztring-ábrázolását egy megadott stílusban és kultúraspecifikus formátumban alakítja át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

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

Paraméterek

s
String

Egy konvertálni kívánt számot tartalmazó sztring.

style
NumberStyles

Az értékek bitenkénti kombinációja NumberStyles , amely a megengedett formátumot sjelzi. A megadható tipikus érték össze van Float adva a következővel AllowThousands: .

provider
IFormatProvider

OlyanIFormatProvider, amely a kultúraspecifikus formázási információkat tartalmazza.s

result
Double

A metódus visszatérésekor a függvény a számérték vagy szimbólum sdupla pontosságú lebegőpontos számát tartalmazza, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a paraméter megfelel a s számbavételi állandóknak, vagy nem megfelelő nullformátumban van, vagy ha Empty nem érvényes enumerálási style állandók kombinációja.styleNumberStyles A .NET-keretrendszeren is meghiúsul, ha sSByte.MinValue vagy nagyobb, mint SByte.MaxValue. Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.

Válaszok

trueha s sikeresen konvertálták; ellenkező esetben. false

Kivételek

style nem érték NumberStyles .

-vagy-

style tartalmazza az AllowHexSpecifier értéket.

Példák

Az alábbi példa bemutatja, hogy a Double.TryParse(String, NumberStyles, IFormatProvider, Double) metódus segítségével elemezhető egy adott stílussal rendelkező és egy adott kultúra konvenciók alapján formázott számok sztringképe.

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

Megjegyzések

A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.

A TryParse metódus hasonló a Parse(String, NumberStyles, IFormatProvider) metódushoz, kivéve, ha ez a metódus nem ad kivételt, ha az átalakítás sikertelen. Ha az átalakítás sikeres, a visszatérési érték az, true és a result paraméter az átalakítás eredményére van állítva. Ha az átalakítás sikertelen, a visszatérési érték nulla false , a result paraméter értéke pedig nulla. Ez szükségtelenné teszi, hogy FormatException kivételkezeléssel teszteljen egy s érvénytelen és nem elemezhető eseményt.

A style paraméter meghatározza az elemzési s művelet sikeres végrehajtásához használható paraméter formátumát. Az enumerálás bitjelölőinek kombinációjának NumberStyles kell lennie. A következő NumberStyles tagok nem támogatottak:

A s paraméter tartalmazhat NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbolvagy NumberFormatInfo.NaNSymbol szimbólumot a kultúra által providerjelzett. Ez a sztring-összehasonlítás nem érzéketlen a .NET Core 3.0-s és újabb verzióiban, de a korábbi verziókban, például a .NET-keretrendszerben megkülönbözteti a kis- és nagybetűket. Emellett a paraméter az értéktől styles függően a következő elemeket is tartalmazhatja:

[ws] [$] [jel][integral-digits,]integral-digits[.fractional-digits][e[sign]exponenciális-számjegyek][ws]

A szögletes zárójelek ([ és ]) elemei nem kötelezőek. Az alábbi táblázat az egyes elemeket ismerteti.

Elem Leírás
Ws Nem kötelező üres terület. Ha a jelölőt is tartalmazzas, a szóköz az elején styleNumberStyles.AllowLeadingWhite jelenhet meg. Ez a jelölőt is tartalmazó s jelölő végén styleNumberStyles.AllowTrailingWhite jelenhet meg.
$ Kultúraspecifikus pénznemszimbólum. A sztringben elfoglalt helyét a NumberFormatInfo.CurrencyNegativePattern paraméter metódusa NumberFormatInfo.CurrencyPositivePatternNumberFormatInfo által IFormatProvider.GetFormat visszaadott objektum vagy provider tulajdonságok határozzák meg. A pénznemszimbólum akkor jelenhet meg, s ha style tartalmazza a jelölőt NumberStyles.AllowCurrencySymbol .
jel Nem kötelező jel. A jel a jelölőt is magában foglaló tábla elején sstyle jelenhet meg, és a jelző végén NumberStyles.AllowLeadingSignsstyle is megjelenik.NumberStyles.AllowTrailingSign Zárójelekkel negatív értéket jelölhet s , ha style a NumberStyles.AllowParentheses jelölőt is tartalmazza.
integráljegyek 0 és 9 közötti számjegyek sorozata, amelyek a szám szerves részét határozzák meg. Az integráljegyek hiányoznak, ha törtjegyek vannak.
, Kultúraspecifikus ezres elválasztó szimbólum. A jelenlegi kultúra ezres elválasztó szimbóluma akkor jelenhet meg, s ha style tartalmazza a jelölőt NumberStyles.AllowThousands .
. Kultúraspecifikus tizedesjel. Az aktuális kultúra tizedesjele akkor jelenhet meg, s ha style tartalmazza a jelölőt NumberStyles.AllowDecimalPoint .
törtjegyek 0 és 9 közötti számjegysorozat, amely a szám törtrészét adja meg. A tört számjegyek akkor jelenhetnek meg, s ha style a jelölőt NumberStyles.AllowDecimalPoint is tartalmazzák.
e Az e vagy E karakter, amely azt jelzi, hogy s exponenciális jelöléssel jelölhet egy számot. A s paraméter exponenciális jelöléssel jelölhet egy számot, ha a stílus tartalmazza a jelölőt NumberStyles.AllowExponent .
exponenciális számjegyek 0 és 9 közötti számjegysorozat, amely kitevőt határoz meg.

Note

A befejező NUL (U+0000) karaktereket s az elemzési művelet figyelmen kívül hagyja, függetlenül az style argumentum értékétől.

A csak számjegyeket tartalmazó sztring (amely megfelel a NumberStyles.None stílusnak) mindig sikeresen elemzi, ha a típus tartományában Double van. A fennmaradó System.Globalization.NumberStyles tagok olyan elemeket szabályoznak, amelyek lehetnek, de nem szükségesek a bemeneti sztringben való szerephez. Az alábbi táblázat azt mutatja be, hogy az egyes NumberStyles jelölők hogyan befolyásolják a lehetséges selemeket.

NumberStyles érték A számjegyeken kívül az s-ben engedélyezett elemek
None Csak az integráljegyek elem.
AllowDecimalPoint A . és a törtjegyű elemek.
AllowExponent A s paraméter exponenciális jelölést is használhat. Ez a jelző önmagában támogatja az Eexponenciális számjegyekformájábanlévő értékeket; További jelzőkre van szükség a sztringek exponenciális jelölésben való sikeres elemzéséhez olyan elemekkel, mint a pozitív vagy negatív jelek és a tizedesjelek.
AllowLeadingWhite A ws elem az elején s.
AllowTrailingWhite A ws elem a végén s.
AllowLeadingSign A tábla elején lévő s.
AllowTrailingSign A jelelem a végén s.
AllowParentheses A numerikus értéket tartalmazó zárójelek formájában megjelenő jelelem .
AllowThousands A , elem.
AllowCurrencySymbol Az $ elem.
Currency Összes. A s paraméter nem jelölhet hexadecimális számot vagy exponenciális számokat.
Float A ws elem az elején vagy végén s, a jel elején s, és a . szimbólum. A s paraméter exponenciális jelölést is használhat.
Number A ws, sign, ezres elválasztó (,) és decimális pont (.) elemek.
Any Az összes stílus, kivéve s a hexadecimális számokat nem jelölheti.

A provider paraméter egy IFormatProvider implementáció, például egy vagy NumberFormatInfo egy CultureInfo objektum. A provider paraméter az elemzéshez használt kultúraspecifikus információkat szolgáltatja. Ha provider igen, null vagy egy NumberFormatInfo objektum nem kérhető le, a rendszer az aktuális kulturális környezet formátumadatait használja.

Az átalakítás meghiúsul, ha a s paraméter null numerikus érték, a provider paraméter nem hoz létre objektumot NumberFormatInfo , vagy a style paraméter nem az enumerálás bitjelölőinek NumberStyles kombinációja.

Általában, ha a Double.TryParse metódus meghívásával létrehozott sztringet ad át a Double.ToString metódusnak, az eredeti Double érték lesz visszaadva. A pontosság elvesztése miatt azonban előfordulhat, hogy az értékek nem lesznek egyenlők. Ezen kívül megpróbálhatja elemezni a sztring megjelenítését, Double.MinValue vagy Double.MaxValue nem sikerül az oda-vissza út. A .NET-keretrendszeren egy OverflowException dob. .NET Core 3.0-s és újabb verzióiban Double.NegativeInfinity ad vissza, ha MinValue vagy Double.PositiveInfinity próbál elemezni MaxValue. Az alábbi példa egy illusztrációt tartalmaz.

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.

Ha .NET keretrendszerben a s kívül esik a Double adattípus tartományán, a Double.TryParse(String, NumberStyles, IFormatProvider, Double) metódus OverflowException.

A .NET Core 3.0-s és újabb verzióiban nem történik kivétel, ha s kívül esik a Double adattípus tartományán. A legtöbb esetben a metódus kiszámítja Double.TryParse(String, NumberStyles, IFormatProvider, Double) az eredmény vagy Double.PositiveInfinityDouble.NegativeInfinitya . Van azonban egy kis értékkészlet, amely közelebb van a pozitív vagy negatív végtelennél nagyobb maximális vagy minimális értékekhez Double . Ezekben az esetekben a metódus kiszámítja az eredmény vagy Double.MaxValueDouble.MinValuea .

Ha egy elemzési művelet során elválasztó elem található a s paraméterben, és a vonatkozó pénznem vagy szám decimális és csoportelválasztói megegyeznek, az elemzési művelet feltételezi, hogy az elválasztó nem csoportelválasztó, hanem decimális elválasztó. Az elválasztókkal kapcsolatos további információkért lásd CurrencyDecimalSeparator: , NumberDecimalSeparator, CurrencyGroupSeparator, és NumberGroupSeparator.

Lásd még

A következőre érvényes: