Double.TryParse Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Převede řetězcovou reprezentaci čísla na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
Přetížení
| Name | Description |
|---|---|
| TryParse(String, IFormatProvider, Double) |
Pokusí se analyzovat řetězec do hodnoty. |
| TryParse(ReadOnlySpan<Char>, Double) |
Převede reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
| TryParse(String, Double) |
Převede řetězcovou reprezentaci čísla na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
| TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double) |
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, Double) |
Pokusí se analyzovat rozsah znaků do hodnoty. |
| TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Double) |
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty. |
| TryParse(ReadOnlySpan<Byte>, Double) |
Pokusí se převést rozsah znaků UTF-8 obsahující řetězcovou reprezentaci čísla na ekvivalent čísla s dvojitou přesností s plovoucí desetinnou čárkou. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double) |
Převede rozsah znaků obsahující řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
| TryParse(String, NumberStyles, IFormatProvider, Double) |
Převede řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
Poznámky
V .NET Core 3.0 a novějších se hodnoty, které jsou příliš velké, aby představovaly, se zaokrouhlují na PositiveInfinity specifikaci IEEE 754 nebo NegativeInfinity podle potřeby. V předchozích verzích, včetně rozhraní .NET Framework, parsování hodnoty, která byla příliš velká, aby představovala selhání.
TryParse(String, IFormatProvider, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Pokusí se analyzovat řetězec do hodnoty.
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ý se má analyzovat.
- provider
- IFormatProvider
Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .
- result
- Double
Pokud tato metoda vrátí, obsahuje výsledek úspěšné analýzy s nebo nedefinovanou hodnotu při selhání.
Návraty
true pokud s byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Char>, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Převede reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
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>
Rozsah znaků, který obsahuje řetězcovou reprezentaci čísla, která se má převést.
- result
- Double
Pokud tato metoda vrátí, obsahuje číslo s plovoucí desetinnou čárkou s dvojitou přesností odpovídající číselné hodnotě nebo symbolu obsaženému v s parametru, pokud převod proběhl úspěšně nebo nula, pokud převod selhal. Převod selže, pokud s je parametr nebo je null prázdný. 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 neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Poznámky
V .NET Core 3.0 a novějších se hodnoty, které jsou příliš velké, aby představovaly, se zaokrouhlují na PositiveInfinity specifikaci IEEE 754 nebo NegativeInfinity podle potřeby. V předchozích verzích, včetně rozhraní .NET Framework, parsování hodnoty, která byla příliš velká, aby představovala selhání.
Platí pro
TryParse(String, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Převede řetězcovou reprezentaci čísla na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
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, které chcete převést.
- result
- Double
Pokud tato metoda vrátí, obsahuje číslo s plovoucí desetinnou čárkou s dvojitou přesností ekvivalent parametru s , pokud převod proběhl úspěšně nebo nula, pokud převod selhal. Převod selže, pokud s je null parametr nebo Empty není číslo v platném formátu. Selže také v rozhraní .NET Framework, pokud s představuje číslo menší než Double.MinValue nebo větší než Double.MaxValue. Tento parametr je předán neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Příklady
Následující příklad používá metodu k převodu TryParse(String, Double) řetězcové reprezentace číselných hodnot na Double hodnoty. Předpokládá se, ž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 se hodnoty, které jsou příliš velké, aby představovaly, se zaokrouhlují na PositiveInfinity specifikaci IEEE 754 nebo NegativeInfinity podle potřeby. V předchozích verzích, včetně rozhraní .NET Framework, parsování hodnoty, která byla příliš velká, aby představovala selhání.
Toto přetížení se liší od Double.Parse(String) metody vrácením logické hodnoty, která označuje, zda byla operace analýzy úspěšná místo vrácení analyzované číselné hodnoty. Eliminuje nutnost použít zpracování výjimek k otestování v FormatException případě, že s je neplatný a nelze jej úspěšně analyzovat.
Parametr s může obsahovat aktuální jazykovou NumberFormatInfo.PositiveInfinitySymbolverzi , NumberFormatInfo.NegativeInfinitySymbolnebo NumberFormatInfo.NaNSymbol symbol. Toto porovnání řetězců nerozlišuje malá a velká písmena v .NET Core 3.0 a novějších verzích, ale v předchozích verzích, včetně rozhraní .NET Framework, rozlišují malá a velká písmena. Parametrem s může být také řetězec formuláře:
[ws] [znaménko] [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 | Řada prázdných znaků. |
| znaménko | Symbol záporného nebo kladného znaménka. |
| integrální číslice | Řada číselných znaků v rozsahu od 0 do 9, která určuje celočíselnou část čísla. Integrální číslice mohou chybět, pokud existují desetinné číslice. |
| , | Symbol oddělovače skupin specifických pro jazykovou verzi. |
| . | Symbol desetinné čárky specifické pro jazykovou verzi. |
| desetinné číslice | Řada číselných znaků v rozsahu od 0 do 9, která určuje desetinnou část čísla. |
| E | Velké nebo malé písmeno "e", které označuje exponenciální (vědecký) zápis. |
| exponenciální číslice | Řada číselných znaků v rozsahu od 0 do 9, která určuje exponent. |
Další informace o numerických formátech naleznete v tématu Typy formátování.
Parametr s se interpretuje pomocí kombinace NumberStyles.Float příznaků a NumberStyles.AllowThousands příznaků. To znamená, že jsou povolené prázdné znaky a oddělovače tisíců, ale symboly měny nejsou. Pokud chcete explicitně definovat prvky (například symboly měny, oddělovače tisíců a prázdné znaky), které mohou být přítomny , spoužijte Double.TryParse(String, NumberStyles, IFormatProvider, Double) 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í systémovou jazykovou verzi. Další informace najdete na webu NumberFormatInfo.CurrentInfo. K analýze řetězce pomocí informací o formátování některé jiné zadané jazykové verze použijte Double.TryParse(String, NumberStyles, IFormatProvider, Double) přetížení metody.
Obvykle platí, že pokud předáte metodu Double.TryParse řetězec vytvořený voláním Double.ToString metody, vrátí se původní Double hodnota. Kvůli ztrátě přesnosti se však hodnoty nemusí shodovat. Kromě toho se pokus o parsování řetězcové reprezentace buď Double.MinValue nebo Double.MaxValue nezdaří odezvu. V rozhraní .NET Framework vyvolá výjimku 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. Následující příklad obsahuje obrázek.
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 s mimo rozsah datového Double typu, TryParse(String, Double) vyvolá metoda .OverflowException
V .NET Core 3.0 a novějších verzích se nevyvolá žádná výjimka, pokud s je datový typ mimo rozsah Double . Ve většině případů metoda TryParse(String, Double) vypočítá výsledek Double.PositiveInfinity nebo Double.NegativeInfinity. Existuje však malá sada hodnot, které jsou považovány za blíže k maximální nebo minimální hodnotě Double než k kladnému nebo zápornému nekonečnu. V těchto případech metoda vypočítá výsledek Double.MaxValue nebo Double.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é, operace analýzy předpokládá, že oddělovač je oddělovač desetinných míst místo oddělovače skupiny. Další informace o oddělovači naleznete v tématu CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatora NumberGroupSeparator.
Viz také
- Parse(String)
- ToString()
- Analýza číselných řetězců v .NET
- Ukázka : rozhraní .NET Core WinForms (C#)
- ukázka : .NET Core WinForms Formatting Utility (Visual Basic)
Platí pro
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty.
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 pro analýzu.
- provider
- IFormatProvider
Objekt, který poskytuje informace o utf8Textformátování specifické pro jazykovou verzi .
- result
- Double
Při vrácení obsahuje výsledek úspěšné utf8Text analýzy nebo nedefinovanou hodnotu selhání.
Návraty
true pokud utf8Text byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Pokusí se analyzovat rozsah znaků do hodnoty.
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 sformátování specifické pro jazykovou verzi .
- result
- Double
Pokud tato metoda vrátí, obsahuje výsledek úspěšné analýzy s, nebo nedefinovanou hodnotu při selhání.
Návraty
true pokud s byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty.
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 pro analýzu.
- style
- NumberStyles
Bitová kombinace stylů čísel, které mohou být přítomny v utf8Text.
- provider
- IFormatProvider
Objekt, který poskytuje informace o utf8Textformátování specifické pro jazykovou verzi .
- result
- Double
Při vrácení obsahuje výsledek úspěšné utf8Text analýzy nebo nedefinovanou hodnotu selhání.
Návraty
true pokud utf8Text byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Byte>, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Pokusí se převést rozsah znaků UTF-8 obsahující řetězcovou reprezentaci čísla na ekvivalent čísla s dvojitou přesností s plovoucí desetinnou čárkou.
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
Pokud tato metoda vrátí, obsahuje číslo s plovoucí desetinnou čárkou s dvojitou přesností ekvivalent číselné hodnoty nebo symbolu obsaženého v utf8Text případě, že převod proběhl úspěšně nebo nula, pokud převod selhal. Převod selže, pokud utf8Text je Empty nebo není v platném formátu. Tento parametr je předán neinicializovaný; jakákoli hodnota původně zadaná ve výsledku se přepíše.
Návraty
true pokud utf8Text byl úspěšně převeden; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
Převede rozsah znaků obsahující řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
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
Parametry
- s
- ReadOnlySpan<Char>
Rozsah znaků jen pro čtení, který obsahuje číslo, které chcete převést.
- style
- NumberStyles
Bitová kombinace NumberStyles hodnot, která označuje povolený formát s. Typická hodnota, kterou je třeba zadat, se zkombinuje Float s AllowThousands.
- provider
- IFormatProvider
Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .
- result
- Double
Pokud tato metoda vrátí a pokud převod byl úspěšný, obsahuje číslo s plovoucí desetinnou čárkou s dvojitou přesností ekvivalent číselné hodnoty nebo symbolu obsaženého v s. Obsahuje nulu, pokud převod selhal. Převod selže, pokud s je nullparametr , prázdný znak rozpětí nebo není čí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 neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Poznámky
V .NET Core 3.0 a novějších se hodnoty, které jsou příliš velké, aby představovaly, se zaokrouhlují na PositiveInfinity specifikaci IEEE 754 nebo NegativeInfinity podle potřeby. V předchozích verzích, včetně rozhraní .NET Framework, parsování hodnoty, která byla příliš velká, aby představovala selhání.
Platí pro
TryParse(String, NumberStyles, IFormatProvider, Double)
- Zdroj:
- Double.cs
- Zdroj:
- Double.cs
- 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 ekvivalent čísla s plovoucí desetinnou čárkou s dvojitou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
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, které chcete převést.
- style
- NumberStyles
Bitová kombinace NumberStyles hodnot, která označuje povolený formát s. Typická hodnota, kterou je třeba zadat, se zkombinuje Float s AllowThousands.
- provider
- IFormatProvider
Informace IFormatProvider o sformátování specifické pro jazykovou verzi .
- result
- Double
Pokud tato metoda vrátí, obsahuje číslo s plovoucí desetinnou čárkou s dvojitou přesností ekvivalent číselné hodnoty nebo symbolu obsaženého v s, pokud převod proběhl úspěšně nebo nula v případě selhání převodu. Převod selže, pokud s je parametr nebo null není ve formátu kompatibilním s Empty, nebo pokud style není platná kombinace konstant výčtu styleNumberStyles. Selže také v rozhraní .NET Framework, pokud s představuje číslo menší než SByte.MinValue nebo větší než SByte.MaxValue. Tento parametr je předán neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Výjimky
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 se hodnoty, které jsou příliš velké, aby představovaly, se zaokrouhlují na PositiveInfinity specifikaci IEEE 754 nebo NegativeInfinity podle potřeby. V předchozích verzích, včetně rozhraní .NET Framework, parsování hodnoty, která byla příliš velká, aby představovala selhání.
Metoda TryParse je podobná Parse(String, NumberStyles, IFormatProvider) metodě, s výjimkou této metody nevyvolá výjimku, pokud převod selže. Pokud převod proběhne úspěšně, návratová hodnota je true a result parametr je nastaven na výsledek převodu. Pokud převod selže, návratová hodnota je false a parametr je nastaven na nulu result . Tím se eliminuje nutnost použít zpracování výjimek k otestování v FormatException případě, že s je neplatný a nelze je úspěšně analyzovat.
Parametr style definuje povolený formát parametru s pro úspěšnou operaci analýzy. 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 symbol pro jazykovou verzi označenou provider. Toto porovnání řetězců nerozlišuje malá a velká písmena v .NET Core 3.0 a novějších verzích, ale v předchozích verzích, včetně rozhraní .NET Framework, rozlišují malá a velká písmena. Kromě toho může parametr v závislosti na hodnotě styleparametru s obsahovat následující prvky:
[ws] [$] [znaménko] [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é znaky. Prázdné znaky se můžou objevit na začátku s , pokud style příznak NumberStyles.AllowLeadingWhite obsahuje. Může se zobrazit na konci s , pokud style příznak obsahuje NumberStyles.AllowTrailingWhite . |
| $ | Symbol měny specifický pro jazykovou verzi. Jeho pozice v řetězci je definována vlastnostmi NumberFormatInfo.CurrencyNegativePatternNumberFormatInfo.CurrencyPositivePattern objektu NumberFormatInfo vráceného IFormatProvider.GetFormat metodou parametru provider . Symbol měny se může zobrazit, s pokud style obsahuje NumberStyles.AllowCurrencySymbol příznak. |
| znaménko | Volitelné znaménko. Znaménko se může zobrazit na začátku s , pokud style příznak obsahuje NumberStyles.AllowLeadingSign , a může se zobrazit na konci s , pokud style příznak NumberStyles.AllowTrailingSign obsahuje. Závorky lze použít s k označení záporné hodnoty, pokud style obsahuje NumberStyles.AllowParentheses příznak. |
| integrální číslice | Řada číslic v rozsahu od 0 do 9, která určuje celočíselnou část čísla. Integrální číslice mohou chybět, pokud existují desetinné číslice. |
| , | Symbol oddělovače tisíců specifických pro jazykovou verzi. Symbol oddělovače tisíců aktuální jazykové verze se může zobrazit, 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, s pokud style příznak obsahuje NumberStyles.AllowDecimalPoint . |
| desetinné číslice | Řada číslic v rozsahu od 0 do 9, která určuje desetinnou část čísla. Desetinná číslice se můžou zobrazit, s pokud style příznak NumberStyles.AllowDecimalPoint obsahuje. |
| 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. |
| exponenciální číslice | Řada číslic v rozsahu od 0 do 9, která určuje exponent. |
Poznámka
Všechny ukončující nulové znaky (U+0000) jsou s ignorovány operací analýzy bez ohledu na hodnotu argumentu style .
Řetězec s číslicemi (který odpovídá NumberStyles.None stylu) se vždy úspěšně parsuje, pokud je v rozsahu Double typu. Zbývající System.Globalization.NumberStyles členy 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 s.
| Hodnota NumberStyles | Prvky povolené v s kromě číslic |
|---|---|
| None | Pouze celočíselný prvek číslic. |
| AllowDecimalPoint | Prvky . a desetinné číslice . |
| AllowExponent | Parametr s může také použít exponenciální zápis. Tento příznak sám podporuje hodnoty v celočíselné čísliceEexponenciální číslice; Další příznaky jsou potřeba k úspěšnému parsování řetězců v exponenciálním zápisu s takovými prvky, jako jsou kladné nebo záporné znaménka a symboly desetinné čárky. |
| AllowLeadingWhite | Element ws na začátku s. |
| AllowTrailingWhite | Prvek ws na konci .s |
| AllowLeadingSign | Prvek znaménka na začátku s. |
| AllowTrailingSign | Prvek znaménka na konci znaku s. |
| AllowParentheses | Prvek znaménka ve formě závorek ohraničující číselnou hodnotu. |
| AllowThousands | Prvek , . |
| AllowCurrencySymbol | Prvek $ . |
| Currency | Všichni. Parametr s nemůže představovat šestnáctkové číslo nebo číslo v exponenciálním zápisu. |
| Float |
Prvek ws na začátku nebo konci sznaku , na začátku sa symbolu . Parametr s může také použít exponenciální zápis. |
| Number | Prvky ws, signoddělovač tisíců (,) a desetinná čárka (.). |
| Any | Všechny styly s výjimkou s nemohou představovat šestnáctkové číslo. |
Parametr provider je IFormatProvider implementace, například NumberFormatInfo objekt.CultureInfo Parametr provider poskytuje informace specifické pro jazykovou verzi používané při analýze. Pokud provider je null nebo NumberFormatInfo objekt nelze získat, použije se informace o formátu pro aktuální jazykovou verzi.
Převod selže, pokud s je null parametr číselnou hodnotou, provider parametr nepřináší NumberFormatInfo objekt nebo style parametr není kombinací bitových příznaků z výčtu NumberStyles .
Obvykle platí, že pokud předáte metodu Double.TryParse řetězec vytvořený voláním Double.ToString metody, vrátí se původní Double hodnota. Kvůli ztrátě přesnosti se však hodnoty nemusí shodovat. Kromě toho se pokus o parsování řetězcové reprezentace buď Double.MinValue nebo Double.MaxValue nezdaří odezvu. V rozhraní .NET Framework vyvolá výjimku 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. Následující příklad obsahuje obrázek.
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 s mimo rozsah datového Double typu, Double.TryParse(String, NumberStyles, IFormatProvider, Double) vyvolá metoda .OverflowException
V .NET Core 3.0 a novějších verzích se nevyvolá žádná výjimka, pokud s je datový typ mimo rozsah Double . Ve většině případů metoda Double.TryParse(String, NumberStyles, IFormatProvider, Double) vypočítá výsledek Double.PositiveInfinity nebo Double.NegativeInfinity. Existuje však malá sada hodnot, které jsou považovány za blíže k maximální nebo minimální hodnotě Double než k kladnému nebo zápornému nekonečnu. V těchto případech metoda vypočítá výsledek Double.MaxValue nebo Double.MinValue.
Pokud je v parametru s během operace analýzy zjištěn oddělovač a platné oddělovače měny nebo čísla desetinných míst a oddělovače skupin jsou stejné, operace analýzy předpokládá, že oddělovač je oddělovač desetinných míst, nikoli oddělovač skupin. Další informace o oddělovači naleznete v tématu CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatora NumberGroupSeparator.