Double.TryParse Metoda

Definice

Převede řetězcové vyjádření čísla na jeho ekvivalentní typ dvojité přesnosti s plovoucí řádovou čárkou. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

Přetížení

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Pokusí se parsovat rozsah znaků na hodnotu.

TryParse(ReadOnlySpan<Char>, Double)

Převede reprezentaci rozsahu čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho ekvivalent čísla s plovoucí desetinou čárkou s dvojitou přesností. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

TryParse(String, Double)

Převede řetězcové vyjádření čísla na jeho ekvivalentní typ dvojité přesnosti s plovoucí řádovou čárkou. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

Pokusí se parsovat rozsah znaků UTF-8 na hodnotu.

TryParse(String, IFormatProvider, Double)

Pokusí se parsovat řetězec na hodnotu.

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

Pokusí se parsovat rozsah znaků UTF-8 na hodnotu.

TryParse(ReadOnlySpan<Byte>, Double)

Pokusí se převést znakový rozsah UTF-8 obsahující řetězcové vyjádření čísla na jeho ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností.

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

Převede znakový rozsah obsahující řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

TryParse(String, NumberStyles, IFormatProvider, Double)

Převede řetězcové vyjádření čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

Poznámky

V .NET Core 3.0 a novějších verzích se hodnoty, které jsou pro reprezentaci příliš velké, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. V předchozích verzích, včetně rozhraní .NET Framework, analýza hodnoty, která byla příliš velká na to, aby reprezentovala, způsobila selhání.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Zdroj:
Double.cs
Zdroj:
Double.cs
Zdroj:
Double.cs

Pokusí se parsovat rozsah znaků na hodnotu.

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

Parametry

s
ReadOnlySpan<Char>

Rozsah znaků, které se mají analyzovat.

provider
IFormatProvider

Objekt, který poskytuje informace o formátování specifické pro sjazykovou verzi.

result
Double

Když tato metoda vrátí, obsahuje výsledek úspěšné analýzy snebo nedefinovanou hodnotu při selhání.

Návraty

true pokud s byl úspěšně parsován, jinak hodnota false.

Platí pro

TryParse(ReadOnlySpan<Char>, Double)

Zdroj:
Double.cs
Zdroj:
Double.cs
Zdroj:
Double.cs

Převede reprezentaci rozsahu čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho ekvivalent čísla s plovoucí desetinou čárkou s dvojitou přesností. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

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

Parametry

s
ReadOnlySpan<Char>

Znakové rozpětí, které obsahuje řetězcové vyjádření čísla, které se má převést.

result
Double

Když tato metoda vrátí, obsahuje číselný ekvivalent dvojité přesnosti s plovoucí desetinou čárkou číselné hodnoty nebo symbolu obsaženého v s parametru, pokud byl převod úspěšný, nebo nulu, pokud se převod nezdařil. Převod se nezdaří, pokud s je null parametr prázdný nebo není ve formátu kompatibilním s style. Převod se také nezdaří, pokud style není platná kombinace NumberStyles výčtových konstant. Pokud s je platné číslo menší než Double.MinValue, result je NegativeInfinity. Pokud s je platné číslo větší než Double.MaxValue, result je PositiveInfinity. Tento parametr je předán neinicializován; jakákoli hodnota původně zadaná v result bude přepsána.

Návraty

true pokud s byl úspěšně převeden, jinak hodnota false.

Poznámky

V .NET Core 3.0 a novějších verzích se hodnoty, které jsou pro reprezentaci příliš velké, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. V předchozích verzích, včetně rozhraní .NET Framework, analýza hodnoty, která byla příliš velká na reprezentaci, způsobila chybu.

Platí pro

TryParse(String, Double)

Zdroj:
Double.cs
Zdroj:
Double.cs
Zdroj:
Double.cs

Převede řetězcové vyjádření čísla na jeho ekvivalentní typ dvojité přesnosti s plovoucí řádovou čárkou. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

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

Parametry

s
String

Řetězec obsahující číslo k převedení.

result
Double

Když tato metoda vrátí, obsahuje číselný ekvivalent dvojité přesnosti s plovoucí desetinou čárkou parametru s , pokud byl převod úspěšný, nebo nulu, pokud se převod nezdařil. Převod se nezdaří, s pokud parametr je null nebo Empty není číslo v platném formátu. Selže také v rozhraní .NET Framework a .NET Core 2.2 a starších verzích, pokud s představuje číslo menší než Double.MinValue nebo větší než Double.MaxValue. Tento parametr je předán neinicializován; jakákoli hodnota původně zadaná v result bude přepsána.

Návraty

true pokud s byl převod úspěšně, v opačném případě false.

Příklady

Následující příklad používá metodu TryParse(String, Double) k převodu řetězcových reprezentací číselných hodnot na Double hodnoty. Předpokládá, že en-US je aktuální jazyková verze.

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

Poznámky

V .NET Core 3.0 a novějších verzích se hodnoty, které jsou pro reprezentaci příliš velké, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. V předchozích verzích, včetně rozhraní .NET Framework, analýza hodnoty, která byla příliš velká na reprezentaci, způsobila chybu.

Toto přetížení se liší od Double.Parse(String) metody vrácením logické hodnoty, která označuje, zda byla operace parsování úspěšná místo vrácení analyzované číselné hodnoty. Eliminuje potřebu použití zpracování výjimek k testování objektu FormatException v případě, že s je neplatná a nelze ji úspěšně analyzovat.

Parametr s může obsahovat aktuální jazykovou NumberFormatInfo.PositiveInfinitySymbolverzi , NumberFormatInfo.NegativeInfinitySymbolNumberFormatInfo.NaNSymbol (při porovnání řetězců se rozlišují malá a velká písmena) nebo řetězec ve formátu :

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

Prvky v hranatých závorkách jsou volitelné. Následující tabulka popisuje jednotlivé prvky.

Element Popis
Ws Posloupnost znaků mezer.
sign Symbol záporného znaménka nebo symbol kladného znaménka.
číslice-základu Řada číselných znaků v rozsahu od 0 do 9, které určují nedílnou část čísla. Číslice základu nemusí být uvedeny, pokud jsou uvedeny desetinné číslice.
, Symbol oddělovače skupin, specifický pro jazykovou verzi.
. Symbol desetinné čárky specifický pro jazykovou verzi.
desetinné-číslice Řada číselných znaků od 0 do 9, které určují zlomkovou část čísla.
E Velké nebo malé písmeno "e", které označuje exponenciální (vědecký) zápis.
číslice-exponentu Řada číselných znaků od 0 do 9, které určují exponent.

Další informace o formátech čísel najdete v tématu Typy formátování.

Parametr je s interpretován pomocí kombinace NumberStyles.Float příznaků a NumberStyles.AllowThousands . To znamená, že mezery a oddělovače tisíců jsou povoleny, ale symboly měny nikoli. Pokud chcete explicitně definovat prvky (například symboly měny, oddělovače tisíců a prázdné znaky), které se můžou vyskytovat v sobjektu Double.TryParse(String, NumberStyles, IFormatProvider, Double) , použijte přetížení metody .

Parametr s je analyzován pomocí informací o formátování v objektu NumberFormatInfo , který je inicializován pro aktuální jazykovou verzi systému. Další informace naleznete v tématu NumberFormatInfo.CurrentInfo. Chcete-li analyzovat řetězec pomocí informací o formátování některé jiné jazykové verze, použijte Double.TryParse(String, NumberStyles, IFormatProvider, Double) přetížení metody.

Obvykle, pokud předáte Double.TryParse metodě řetězec, který je vytvořen voláním Double.ToString metody, je vrácena původní Double hodnota. Z důvodu ztráty přesnosti nemusí být hodnoty stejné. Kromě toho pokus o parsování řetězcové reprezentace nebo Double.MinValueDouble.MaxValue selhání odezvy. V rozhraní .NET Framework a .NET Core 2.2 a předchozích verzích vyvolá .OverflowException V .NET Core 3.0 a novějších verzích se vrátí Double.NegativeInfinity , pokud se pokusíte parsovat MinValue nebo Double.PositiveInfinity pokud se pokusíte parsovat MaxValue. V následujícím příkladu je uvedena ukázka.

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.

Pokud je v rozhraní .NET Framework a .NET Core 2.2 a starších verzích s mimo rozsah datového Double typu, TryParse(String, Double) metoda vyvolá .OverflowException

V .NET Core 3.0 a novějších verzích se nevyvolá žádná výjimka, pokud s je mimo rozsah datového Double typu. Ve většině případů TryParse(String, Double) metoda vypočítá výsledek nebo Double.PositiveInfinityDouble.NegativeInfinity. Existuje však malá množina hodnot, které jsou považovány za blíže maximální nebo minimální hodnotě Double než kladnému nebo zápornému nekonečnu. V těchto případech metoda vypočítá výsledek nebo Double.MaxValueDouble.MinValue.

Pokud je v parametru s během operace analýzy zjištěn oddělovač a oddělovače desetinných míst a oddělovače skupin jsou stejné, předpokládá se, že oddělovač je oddělovač desetinných míst, nikoli oddělovač skupin. Další informace o oddělovacích najdete v tématu CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatora NumberGroupSeparator.

Viz také

Platí pro

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

Zdroj:
Double.cs
Zdroj:
Double.cs

Pokusí se parsovat rozsah znaků UTF-8 na hodnotu.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Rozsah znaků UTF-8, které se mají analyzovat.

provider
IFormatProvider

Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi .utf8Text

result
Double

Při vrácení obsahuje výsledek úspěšné analýzy utf8Text nebo nedefinovanou hodnotu při selhání.

Návraty

truepokud utf8Text byl úspěšně parsován, v opačném případě . false

Platí pro

TryParse(String, IFormatProvider, Double)

Zdroj:
Double.cs
Zdroj:
Double.cs
Zdroj:
Double.cs

Pokusí se parsovat řetězec na hodnotu.

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

Parametry

s
String

Řetězec, který chcete analyzovat.

provider
IFormatProvider

Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi .s

result
Double

Když se tato metoda vrátí, obsahuje výsledek úspěšné analýzy s nebo nedefinovanou hodnotu při selhání.

Návraty

truepokud s byl úspěšně parsován, v opačném případě . false

Platí pro

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

Zdroj:
Double.cs
Zdroj:
Double.cs

Pokusí se parsovat rozsah znaků UTF-8 na hodnotu.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Rozsah znaků UTF-8, které se mají analyzovat.

style
NumberStyles

Bitové kombinace stylů čísel, které se můžou vyskytovat v nástroji utf8Text.

provider
IFormatProvider

Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi .utf8Text

result
Double

Při vrácení obsahuje výsledek úspěšné analýzy utf8Text nebo nedefinovanou hodnotu při selhání.

Návraty

truepokud utf8Text byl úspěšně parsován, v opačném případě . false

Platí pro

TryParse(ReadOnlySpan<Byte>, Double)

Zdroj:
Double.cs
Zdroj:
Double.cs

Pokusí se převést znakový rozsah UTF-8 obsahující řetězcovou reprezentaci čísla na jeho ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Rozsah znaků UTF-8 jen pro čtení, který obsahuje číslo, které se má převést.

result
Double

Když se tato metoda vrátí, obsahuje číselnou hodnotu s plovoucí desetinou čárkou s dvojitou přesností číselnou hodnotu nebo symbol obsažený v případě úspěšného převodu nebo nula, utf8Text pokud převod selhal. Převod selže, utf8Text pokud je Empty nebo není v platném formátu. Tento parametr je předán neinicializován; jakákoli hodnota původně zadaná ve výsledku bude přepsána.

Návraty

true pokud utf8Text byl převod úspěšně, v opačném případě false.

Platí pro

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

Zdroj:
Double.cs
Zdroj:
Double.cs
Zdroj:
Double.cs

Převede znakový rozsah obsahující řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

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

Parametry

s
ReadOnlySpan<Char>

Rozsah znaků jen pro čtení, který obsahuje číslo, které se má převést.

style
NumberStyles

Bitová kombinace NumberStyles hodnot, která označuje povolený formát .s Typická hodnota, která se má zadat, je Float kombinována s AllowThousandshodnotou .

provider
IFormatProvider

Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi .s

result
Double

Když tato metoda vrátí a pokud převod proběhl úspěšně, obsahuje číselný ekvivalent s plovoucí desetinou čárkou s dvojitou přesností číselné hodnoty nebo symbolu obsaženého v ssouboru . Pokud převod selhal, obsahuje nulu. Převod se nezdaří, pokud s je nullparametr , prázdný znakový rozsah nebo číslo ve formátu kompatibilním s style. Pokud s je platné číslo menší než Double.MinValue, result je NegativeInfinity. Pokud s je platné číslo větší než Double.MaxValue, result je PositiveInfinity. Tento parametr je předán neinicializován; jakákoli hodnota původně zadaná v result se přepíše.

Návraty

true pokud s byl převod úspěšně, v opačném případě false.

Poznámky

V .NET Core 3.0 a novějších verzích se hodnoty, které jsou pro reprezentaci příliš velké, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. V předchozích verzích, včetně rozhraní .NET Framework, analýza hodnoty, která byla příliš velká na to, aby reprezentovala, způsobila selhání.

Platí pro

TryParse(String, NumberStyles, IFormatProvider, Double)

Zdroj:
Double.cs
Zdroj:
Double.cs
Zdroj:
Double.cs

Převede řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, zda byl převod úspěšný, či nikoli.

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

Parametry

s
String

Řetězec obsahující číslo k převedení.

style
NumberStyles

Bitová kombinace NumberStyles hodnot, která označuje povolený formát .s Typická hodnota, která se má zadat, je Float kombinována s AllowThousandshodnotou .

provider
IFormatProvider

Objekt IFormatProvider , který poskytuje informace o formátování specifické pro sjazykovou verzi .

result
Double

Když se tato metoda vrátí, obsahuje číselnou hodnotu s plovoucí desetinou čárkou s dvojitou přesností číselnou hodnotu nebo symbol obsažený v , pokud převod proběhl úspěšně, nebo nula, spokud převod selhal. Převod selže, pokud s parametr je null nebo Empty není ve formátu kompatibilním s style, nebo pokud style není platnou kombinací konstant výčtu NumberStyles . Selže také v rozhraní .NET Framework nebo .NET Core 2.2 a starších verzích, pokud s představuje číslo menší než SByte.MinValue nebo větší než SByte.MaxValue. Tento parametr je předán neinicializován; jakákoli hodnota původně zadaná v result se přepíše.

Návraty

true pokud s byl převod úspěšně, v opačném případě false.

Výjimky

style není NumberStyles hodnota.

-nebo-

styleAllowHexSpecifier obsahuje hodnotu.

Příklady

Následující příklad ukazuje použití Double.TryParse(String, NumberStyles, IFormatProvider, Double) metody k analýze řetězcové reprezentace čísel, které mají určitý styl a jsou formátovány pomocí konvencí konkrétní jazykové verze.

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

Poznámky

V .NET Core 3.0 a novějších verzích se hodnoty, které jsou pro reprezentaci příliš velké, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. V předchozích verzích, včetně rozhraní .NET Framework, analýza hodnoty, která byla příliš velká na to, aby reprezentovala, způsobila selhání.

Metoda TryParse je podobná Parse(String, NumberStyles, IFormatProvider) metodě, s tím rozdílem, že tato metoda nevyvolá výjimku, pokud převod selže. Pokud převod proběhne úspěšně, vrátí se hodnota true a result parametr se nastaví na výsledek převodu. Pokud převod selže, návratová hodnota je false a result parametr je nastavený na nulu. Tím se eliminuje nutnost použít zpracování výjimek k testování pro FormatException objekt v případě, že s je neplatný a nelze ho úspěšně analyzovat.

Parametr style definuje povolený formát parametru s , aby operace analýzy byla úspěšná. Musí se jednat o kombinaci bitových příznaků z výčtu NumberStyles . Následující NumberStyles členové nejsou podporováni:

Parametr s může obsahovat NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbolnebo NumberFormatInfo.NaNSymbol pro jazykovou verzi označenou parametrem provider. Kromě toho může parametr v závislosti na hodnotě styles parametru obsahovat následující prvky:

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

Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.

Element Popis
Ws Volitelné prázdné místo. Pokud příznak obsahujeNumberStyles.AllowLeadingWhite, může se na začátku sstyle zobrazit prázdné znaky. Pokud příznak obsahujeNumberStyles.AllowTrailingWhite, může se zobrazit na konci.sstyle
$ Symbol měny pro konkrétní jazykovou verzi. Jeho pozice v řetězci je definována vlastnostmi NumberFormatInfo.CurrencyNegativePattern nebo NumberFormatInfo.CurrencyPositivePattern objektu NumberFormatInfo vráceným metodou IFormatProvider.GetFormat parametru provider . Symbol měny se může zobrazit v s , pokud style obsahuje NumberStyles.AllowCurrencySymbol příznak.
sign Nepovinný znak. Znaménko se může zobrazit na začátku, pokud příznak obsahujeNumberStyles.AllowLeadingSign, a může se zobrazit na konci, s pokud style příznak obsahujeNumberStyles.AllowTrailingSign.styles Závorky lze v s použít k označení záporné hodnoty, pokud style obsahuje NumberStyles.AllowParentheses příznak.
číslice-základu Řada číslic od 0 do 9, které určují základní část čísla. Číslice základu nemusí být uvedeny, pokud jsou uvedeny desetinné číslice.
, Symbol oddělovače tisíců, specifický pro jazykovou verzi. Symbol oddělovače tisíců aktuální jazykové verze se může zobrazit v s , pokud style obsahuje NumberStyles.AllowThousands příznak.
. Symbol desetinné čárky specifický pro jazykovou verzi. Symbol desetinné čárky aktuální jazykové verze se může zobrazit v s , pokud style obsahuje NumberStyles.AllowDecimalPoint příznak.
desetinné-číslice Řada číslic od 0 do 9, které určují desetinnou část čísla. Desetinné číslice se můžou zobrazit v s , pokud style obsahuje NumberStyles.AllowDecimalPoint příznak.
E Znak e nebo E, který označuje, že s může představovat číslo pomocí exponenciálního zápisu. Parametr s může představovat číslo v exponenciálním zápisu, pokud styl obsahuje NumberStyles.AllowExponent příznak.
číslice-exponentu Řada číslic od 0 do 9, které určují exponent.

Poznámka

Operace analýzy ignoruje všechny ukončující ZNAKY NUL (U+0000) bez s ohledu na hodnotu argumentu style .

Řetězec pouze s číslicemi (který odpovídá NumberStyles.None stylu) se vždy úspěšně analyzuje, pokud je v rozsahu Double typu. Zbývající System.Globalization.NumberStyles členové ovládací prvky, které mohou být, ale nejsou nutné, aby byly přítomny ve vstupním řetězci. Následující tabulka uvádí, jak jednotlivé NumberStyles příznaky ovlivňují prvky, které mohou být přítomny v nástroji s.

Hodnota NumberStyles Prvky, které jsou povoleny v s, kromě číslic
None Pouze prvek celočíselné číslice .
AllowDecimalPoint Elementy . a desetinné číslice .
AllowExponent Parametr s může také použít exponenciální notaci. Tento příznak sám o sobě podporuje hodnoty ve formě integrálních číslicEexponenciálních číslic; K úspěšné parsování řetězců v exponenciálním zápisu s prvky, jako jsou kladná nebo záporná znaménka a symboly desetinné čárky, jsou potřeba další příznaky.
AllowLeadingWhite Element ws na začátku souboru s.
AllowTrailingWhite Element ws na konci souboru s.
AllowLeadingSign Element sign na začátku objektu s.
AllowTrailingSign Element sign na konci objektu s.
AllowParentheses Element sign ve formě závorek ohraničující číselnou hodnotu.
AllowThousands Element ,
AllowCurrencySymbol Element $ .
Currency Všechny. Parametr s nemůže představovat šestnáctkové číslo nebo číslo v exponenciálním zápisu.
Float Element ws na začátku nebo na konci znakusna začátku znaku sa symbolu . Parametr s může také použít exponenciální notaci.
Number Oddělovač wstisíců (,) a desetinná čárka (.) sign
Any Všechny styly s výjimkou s nemohou představovat šestnáctkové číslo.

Parametr provider je implementace, například objekt nebo NumberFormatInfoCultureInfo.IFormatProvider Parametr provider poskytuje informace specifické pro jazykovou verzi, které se používají při analýze. Pokud provider je null nebo NumberFormatInfo objekt nelze získat, použijí se informace o formátu pro aktuální jazykovou verzi.

Převod selže, pokud parametr je null nebo není číselnou hodnotou, provider parametr nevydává NumberFormatInfo objekt nebo style parametr není kombinací bitových příznaků z výčtuNumberStyles.s

Obvykle, pokud předáte Double.TryParse metodě řetězec, který je vytvořen voláním Double.ToString metody, je vrácena původní Double hodnota. Z důvodu ztráty přesnosti nemusí být hodnoty stejné. Kromě toho při pokusu o analýzu řetězcové reprezentace jedné Double.MinValue nebo Double.MaxValue se nepodaří provést odezvu. V rozhraní .NET Framework a .NET Core 2.2 a předchozích verzích vyvolá .OverflowException V .NET Core 3.0 a novějších verzích se vrátí Double.NegativeInfinity , pokud se pokusíte parsovat MinValue nebo Double.PositiveInfinity pokud se pokusíte parsovat MaxValue. V následujícím příkladu je uvedena ukázka.

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.

Pokud je v .NET Frameworku a .NET Core 2.2 a starších verzích s mimo rozsah datového Double typu, Double.TryParse(String, NumberStyles, IFormatProvider, Double) metoda vyvolá .OverflowException

V .NET Core 3.0 a novějších verzích se nevyvolá žádná výjimka, pokud s je mimo rozsah datového Double typu. Ve většině případů Double.TryParse(String, NumberStyles, IFormatProvider, Double) metoda vypočítá výsledek nebo Double.PositiveInfinityDouble.NegativeInfinity. Existuje však malá sada hodnot, které se považují za blíže k maximálním nebo minimálním hodnotám Double než k kladnému nebo zápornému nekonečnu. V těchto případech metoda vypočítá výsledek hodnoty Double.MaxValue nebo Double.MinValue.

Pokud je v parametru s během operace analýzy nalezen oddělovač a příslušné oddělovače desetinných míst měny nebo čísla jsou stejné, operace parse předpokládá, že oddělovač je oddělovačem desetinných míst, nikoli oddělovačem skupin. Další informace o oddělovači najdete v tématech CurrencyDecimalSeparator, CurrencyGroupSeparatorNumberDecimalSeparator, a NumberGroupSeparator.

Viz také

Platí pro