Single.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 jednoduchou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
Přetížení
TryParse(String, IFormatProvider, Single) |
Pokusí se analyzovat řetězec do hodnoty. |
TryParse(ReadOnlySpan<Char>, Single) |
Převede řetězcovou reprezentaci čísla ve znakovém rozsahu na ekvivalent čísla s plovoucí desetinnou čárkou s jednoduchou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
TryParse(String, Single) |
Převede řetězcovou reprezentaci čísla na ekvivalent čísla s plovoucí desetinnou čárkou s jednoduchou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single) |
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty. |
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single) |
Pokusí se analyzovat rozsah znaků do hodnoty. |
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Single) |
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty. |
TryParse(ReadOnlySpan<Byte>, Single) |
Pokusí se převést rozsah znaků UTF-8 obsahující řetězcovou reprezentaci čísla na ekvivalent čísla s plovoucí desetinnou čárkou s jednoduchou přesností. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single) |
Převede reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na ekvivalent čísla s plovoucí desetinnou čárkou s jednoduchou přesností. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
TryParse(String, NumberStyles, IFormatProvider, Single) |
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 jednoduchou 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é na reprezentaci, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. 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, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Pokusí se analyzovat řetězec do hodnoty.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = IParsable<float>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out float result);
static member TryParse : string * IFormatProvider * single -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Single) As Boolean
Parametry
- s
- String
Řetězec, který se má analyzovat.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi o s
.
- result
- Single
Pokud tato metoda vrátí, obsahuje výsledek úspěšné analýzy s
nebo nedefinovanou hodnotu při selhání.
Návraty
true
, pokud se s
úspěšně parsoval; jinak false
.
Platí pro
TryParse(ReadOnlySpan<Char>, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Převede řetězcovou reprezentaci čísla ve znakovém rozsahu na ekvivalent čísla s plovoucí desetinnou čárkou s jednoduchou 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] float % result);
public static bool TryParse (ReadOnlySpan<char> s, out float result);
static member TryParse : ReadOnlySpan<char> * single -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Single) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
>rozsah znaků, který obsahuje řetězcovou reprezentaci čísla, která se má převést.
- result
- Single
Pokud tato metoda vrátí, obsahuje jednopřesné číslo s plovoucí desetinnou čárkou ekvivalent s
parametru, pokud převod proběhl úspěšně nebo nula v případě selhání převodu. Převod selže, pokud je parametr s
null
nebo prázdný nebo není číslo v platném formátu. Pokud s
je platné číslo menší než Single.MinValue, result
je NegativeInfinity. Pokud s
je platné číslo větší než Single.MaxValue, result
je PositiveInfinity. Tento parametr je předán neinicializovaný; všechny hodnoty původně zadané v result
budou přepsány.
Návraty
true
, pokud byl s
úspěšně převeden; jinak false
.
Poznámky
V .NET Core 3.0 a novějších se hodnoty, které jsou příliš velké na reprezentaci, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. 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, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Převede řetězcovou reprezentaci čísla na ekvivalent čísla s plovoucí desetinnou čárkou s jednoduchou 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] float % result);
public static bool TryParse (string s, out float result);
public static bool TryParse (string? s, out float result);
static member TryParse : string * single -> bool
Public Shared Function TryParse (s As String, ByRef result As Single) As Boolean
Parametry
- s
- String
Řetězec představující číslo, které se má převést.
- result
- Single
Pokud tato metoda vrátí, obsahuje jednopřesné číslo s plovoucí desetinnou čárkou ekvivalentní číselné hodnotě nebo symbolu obsaženému v s
, pokud převod proběhl úspěšně nebo nula v případě selhání převodu. Převod selže, pokud je parametr s
null
nebo Empty nebo 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ž Single.MinValue nebo větší než Single.MaxValue. Tento parametr je předán neinicializovaný; všechny hodnoty původně zadané v result
budou přepsány.
Návraty
true
, pokud byl s
úspěšně převeden; jinak false
.
Příklady
Následující příklad používá metodu TryParse(String, Single) k převodu řetězcových reprezentací číselných hodnot na Single hodnoty. Předpokládá se, že en-US je aktuální jazyková verze.
string value;
float number;
// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Single.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse a floating-point value with a currency symbol and a
// thousands separator.
value = "$1,643.57";
if (Single.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse value in exponential notation.
value = "-1.643e6";
if (Single.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse a negative integer value.
value = "-168934617882109132";
if (Single.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// The example displays the following output:
// 1643.57
// Unable to parse '$1,643.57'.
// -164300
// -1.689346E+17
// Parse a floating-point value with a thousands separator.
let value = "1,643.57"
match Single.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse a floating-point value with a currency symbol and a
// thousands separator.
let value = "$1,643.57"
match Single.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse value in exponential notation.
let value = "-1.643e6"
match Single.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse a negative integer value.
let value = "-168934617882109132"
match Single.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// The example displays the following output:
// 1643.57
// Unable to parse '$1,643.57'.
// -164300
// -1.689346E+17
Dim value As String
Dim number As Single
' Parse a floating-point value with a thousands separator.
value = "1,643.57"
If Single.TryParse(value, number) Then
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' Parse a floating-point value with a currency symbol and a
' thousands separator.
value = "$1,643.57"
If Single.TryParse(value, number) Then
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' Parse value in exponential notation.
value = "-1.643e6"
If Single.TryParse(value, number)
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' Parse a negative integer number.
value = "-168934617882109132"
If Single.TryParse(value, number)
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' The example displays the following output:
' 1643.57
' Unable to parse '$1,643.57'.
' -1643000
' -1.689346E+17
Poznámky
V .NET Core 3.0 a novějších se hodnoty, které jsou příliš velké na reprezentaci, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. 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 metody Single.Parse(String) vrácením logické hodnoty, která označuje, zda byla operace analýzy úspěšná místo vrácení analyzované číselné hodnoty. Eliminuje potřebu použití zpracování výjimek k otestování FormatException v případě, že s
je neplatný a nelze jej úspěšně analyzovat.
Parametr s
může obsahovat PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol (porovnání řetězců se rozlišují malá a velká písmena) nebo ř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. |
celočíselné čí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. |
Parametr s
se interpretuje pomocí kombinace příznaků NumberStyles.Float a NumberStyles.AllowThousands. 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řítomné v s
, použijte přetížení metody TryParse(String, NumberStyles, IFormatProvider, Single).
Parametr s
se analyzuje pomocí informací o formátování v objektu NumberFormatInfo inicializovaném pro aktuální jazykovou verzi systému. Další informace najdete v tématu NumberFormatInfo.CurrentInfo. K analýze řetězce pomocí informací o formátování některé jiné zadané jazykové verze použijte přetížení metody TryParse(String, NumberStyles, IFormatProvider, Single).
Obvykle platí, že pokud předáte Single.TryParse metodě řetězec vytvořený voláním metody Single.ToString, vrátí se původní hodnota Single. Kvůli ztrátě přesnosti se však hodnoty nemusí shodovat.
Pokud je s
mimo rozsah datového typu Single, vrátí metoda false
v rozhraní .NET Framework a .NET Core 2.2 a starších verzích. V .NET Core 3.0 a novějších verzích vrátí Single.NegativeInfinity, pokud je s
menší než Single.MinValue a Single.PositiveInfinity, pokud je s
větší než Single.MaxValue.
Pokud je v parametru s
během operace analýzy zjištěn oddělovač a platné oddělovače desetinných míst nebo čísel a oddělovačů 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 rozhraní .NET
Platí pro
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = IUtf8SpanParsable<float>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out float result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * single -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Single) As Boolean
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Rozsah znaků UTF-8 pro analýzu.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi o utf8Text
.
- result
- Single
Při vrácení obsahuje výsledek úspěšné analýzy utf8Text
nebo nedefinovanou hodnotu při selhání.
Návraty
true
, pokud se utf8Text
úspěšně parsoval; jinak false
.
Platí pro
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Pokusí se analyzovat rozsah znaků do hodnoty.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = ISpanParsable<float>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out float result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * single -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Single) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Rozsah znaků, které se mají analyzovat.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi o s
.
- result
- Single
Pokud tato metoda vrátí, obsahuje výsledek úspěšné analýzy s
, nebo nedefinovanou hodnotu při selhání.
Návraty
true
, pokud se s
úspěšně parsoval; jinak false
.
Platí pro
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.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] float % result) = System::Numerics::INumberBase<float>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out float result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * single -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Single) 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 formátování specifické pro jazykovou verzi o utf8Text
.
- result
- Single
Při vrácení obsahuje výsledek úspěšné analýzy utf8Text
nebo nedefinovanou hodnotu při selhání.
Návraty
true
, pokud se utf8Text
úspěšně parsoval; jinak false
.
Platí pro
TryParse(ReadOnlySpan<Byte>, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Pokusí se převést rozsah znaků UTF-8 obsahující řetězcovou reprezentaci čísla na ekvivalent čísla s plovoucí desetinnou čárkou s jednoduchou přesností.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] float % result);
public static bool TryParse (ReadOnlySpan<byte> utf8Text, out float result);
static member TryParse : ReadOnlySpan<byte> * single -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Single) As Boolean
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Rozsah znaků UTF-8 jen pro čtení, který obsahuje číslo, které se má převést.
- result
- Single
Pokud tato metoda vrátí, obsahuje jednopřesné číslo s plovoucí desetinnou čárkou ekvivalent číselné hodnoty nebo symbolu obsaženého v utf8Text
, pokud převod proběhl úspěšně nebo nula v případě selhání převodu. Převod selže, pokud je utf8Text
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 byl utf8Text
úspěšně převeden; jinak false
.
Platí pro
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.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 jednoduchou 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] float % result);
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = System::Numerics::INumberBase<float>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out float result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out float result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * single -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Single) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Rozsah znaků jen pro čtení, který obsahuje číslo, které chcete převést. Rozsah se interpretuje pomocí stylu určeného style
.
- style
- NumberStyles
Bitová kombinace hodnot výčtu, která označuje povolený formát s
. Typická hodnota pro zadání je Float v kombinaci s AllowThousands.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi o s
.
- result
- Single
Pokud tato metoda vrátí, obsahuje jednopřesné číslo s plovoucí desetinnou čárkou ekvivalentní číselné hodnotě nebo symbolu obsaženému v s
, pokud převod proběhl úspěšně nebo nula v případě selhání převodu. Převod selže, pokud je parametr s
null
nebo Empty, není ve formátu kompatibilním s style
, představuje číslo menší než Single.MinValue nebo větší než Single.MaxValue, nebo pokud style
není platná kombinace NumberStyles výčtových konstant. Tento parametr je předán neinicializovaný; všechny hodnoty původně zadané v result
budou přepsány.
Návraty
true
, pokud byl s
úspěšně převeden; jinak false
.
Poznámky
V .NET Core 3.0 a novějších se hodnoty, které jsou příliš velké na reprezentaci, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. 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, Single)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.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 jednoduchou 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] float % result);
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = System::Numerics::INumberBase<float>::TryParse;
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out float result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out float result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * single -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Single) As Boolean
Parametry
- s
- String
Řetězec představující číslo, které se má převést.
- style
- NumberStyles
Bitová kombinace hodnot výčtu, která označuje povolený formát s
. Typická hodnota pro zadání je Float v kombinaci s AllowThousands.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi o s
.
- result
- Single
Pokud tato metoda vrátí, obsahuje jednopřesné číslo s plovoucí desetinnou čárkou ekvivalentní číselné hodnotě nebo symbolu obsaženému v s
, pokud převod proběhl úspěšně nebo nula v případě selhání převodu. Převod selže, pokud je parametr s
null
nebo Empty, není ve formátu kompatibilním s style
nebo pokud style
není platná kombinace NumberStyles konstant výčtu. Selže také v rozhraní .NET Framework nebo .NET Core 2.2 a starších verzích, pokud s
představuje číslo menší než Single.MinValue nebo větší než Single.MaxValue. Tento parametr je předán neinicializovaný; všechny hodnoty původně zadané v result
budou přepsány.
Návraty
true
, pokud byl s
úspěšně převeden; jinak false
.
Výjimky
Příklady
Následující příklad ukazuje použití Single.TryParse(String, NumberStyles, IFormatProvider, Single) metoda 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;
System.Globalization.NumberStyles style;
System.Globalization.CultureInfo culture;
float number;
// Parse currency value using en-GB culture.
value = "£1,097.63";
style = System.Globalization.NumberStyles.Number |
System.Globalization.NumberStyles.AllowCurrencySymbol;
culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");
if (Single.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
value = "1345,978";
style = System.Globalization.NumberStyles.AllowDecimalPoint;
culture = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR");
if (Single.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
value = "1.345,978";
style = System.Globalization.NumberStyles.AllowDecimalPoint |
System.Globalization.NumberStyles.AllowThousands;
culture = System.Globalization.CultureInfo.CreateSpecificCulture("es-ES");
if (Single.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
value = "1 345,978";
if (Single.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// The example displays the following output:
// Converted '£1,097.63' to 1097.63.
// Converted '1345,978' to 1345.978.
// Converted '1.345,978' to 1345.978.
// Unable to convert '1 345,978'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = System.Globalization.NumberStyles.Number ||| System.Globalization.NumberStyles.AllowCurrencySymbol
let culture = System.Globalization.CultureInfo.CreateSpecificCulture "en-GB"
match Single.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
let value = "1345,978"
let style = System.Globalization.NumberStyles.AllowDecimalPoint
let culture = System.Globalization.CultureInfo.CreateSpecificCulture "fr-FR"
match Single.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
let value = "1.345,978"
let style = System.Globalization.NumberStyles.AllowDecimalPoint ||| System.Globalization.NumberStyles.AllowThousands
let culture = System.Globalization.CultureInfo.CreateSpecificCulture "es-ES"
match Single.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
let value = "1 345,978"
match Single.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// The example displays the following output:
// Converted '£1,097.63' to 1097.63.
// Converted '1345,978' to 1345.978.
// Converted '1.345,978' to 1345.978.
// Unable to convert '1 345,978'.
Dim value As String
Dim style As System.Globalization.NumberStyles
Dim culture As System.Globalization.CultureInfo
Dim number As Single
' Parse currency value using en-GB culture.
value = "£1,097.63"
style = System.Globalization.NumberStyles.Number Or _
System.Globalization.NumberStyles.AllowCurrencySymbol
culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB")
If Single.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
value = "1345,978"
style = System.Globalization.NumberStyles.AllowDecimalPoint
culture = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")
If Single.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
value = "1.345,978"
style = System.Globalization.NumberStyles.AllowDecimalPoint Or _
System.Globalization.NumberStyles.AllowThousands
culture = System.Globalization.CultureInfo.CreateSpecificCulture("es-ES")
If Single.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
value = "1 345,978"
If Single.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' The example displays the following output:
' Converted '£1,097.63' to 1097.63.
' Converted '1345,978' to 1345.978.
' Converted '1.345,978' to 1345.978.
' Unable to convert '1 345,978'.
Poznámky
V .NET Core 3.0 a novějších se hodnoty, které jsou příliš velké na reprezentaci, zaokrouhlují na PositiveInfinity nebo NegativeInfinity podle požadavků specifikace IEEE 754. 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 metody Parse(String, NumberStyles, IFormatProvider) vrácením logické hodnoty, která označuje, zda byla operace analýzy úspěšná místo vrácení analyzované číselné hodnoty. Eliminuje potřebu použití zpracování výjimek k otestování FormatException v případě, že s
je neplatný a nelze jej ú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 NumberStyles výčtu. Následující NumberStyles členy nejsou podporovány:
Parametr s
může obsahovat PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol pro jazykovou verzi označenou provider
. Kromě toho v závislosti na hodnotě style
může parametr 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 obsahuje příznak NumberStyles.AllowLeadingWhite. Může se zobrazit na konci s , pokud style obsahuje příznak NumberStyles.AllowTrailingWhite. |
$ | Symbol měny specifický pro jazykovou verzi. Jeho pozice v řetězci je definována NumberFormatInfo.CurrencyNegativePattern nebo NumberFormatInfo.CurrencyPositivePattern vlastnosti NumberFormatInfo objekt vrácený IFormatProvider.GetFormat metodou parametru provider . Symbol měny se může zobrazit v s , pokud style obsahuje příznak NumberStyles.AllowCurrencySymbol. |
znaménko |
Volitelné znaménko. Znaménko se může zobrazit na začátku s , pokud style obsahuje příznak NumberStyles.AllowLeadingSign a může se zobrazit na konci s , pokud style obsahuje příznak NumberStyles.AllowTrailingSign. Závorky lze použít v s k označení záporné hodnoty, pokud style obsahuje příznak NumberStyles.AllowParentheses. |
celočíselné čí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 objevit v s , pokud style obsahuje příznak NumberStyles.AllowThousands. |
. | Symbol desetinné čárky specifické pro jazykovou verzi. Symbol desetinné čárky aktuální jazykové verze se může zobrazit v s , pokud style obsahuje příznak NumberStyles.AllowDecimalPoint. |
desetinné číslice | Řada číslic v rozsahu od 0 do 9, která určuje desetinnou část čísla. Desetinné číslice se můžou objevit v s , pokud style obsahuje příznak NumberStyles.AllowDecimalPoint. |
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 příznak NumberStyles.AllowExponent. |
exponenciální číslice | Řada číslic v rozsahu od 0 do 9, která určuje exponent. |
Poznámka
Všechny ukončující NUL (U+0000) znaky v s
jsou ignorovány operací analýzy bez ohledu na hodnotu argumentu style
.
Řetězec pouze s číslicemi (který odpovídá stylu NumberStyles.None) se vždy úspěšně parsuje, pokud je v rozsahu typu Single. Zbývající System.Globalization.NumberStyles členy ovládací prvky, které mohou být, ale nemusí být přítomny ve vstupním řetězci. Následující tabulka uvádí, jak jednotlivé příznaky NumberStyles ovlivňují prvky, které mohou být přítomny v s
.
Hodnota NumberStyles | Prvky povolené v s kromě číslic |
---|---|
None | celočíselné číslice prvek. |
AllowDecimalPoint | . a desetinné číslice prvky. |
AllowExponent | Parametr s může také použít exponenciální zápis. Tento příznak sám podporuje hodnoty ve formuláři 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 | Prvek ws na začátku s . |
AllowTrailingWhite | Prvek ws na konci s . |
AllowLeadingSign | Znak prvek na začátku s . |
AllowTrailingSign | Znak prvek na konci s . |
AllowParentheses | Znak prvek 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 s , znak na začátku s a . symbol. Parametr s může také použít exponenciální zápis. |
Number | Prvky ws , sign , oddě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, jejíž metoda GetFormat vrací objekt NumberFormatInfo, který poskytuje informace o formátování specifické pro jazykovou verzi. Když je vyvolána TryParse(String, NumberStyles, IFormatProvider, Single) metoda, volá provider
parametr GetFormat metodu a předá ho Type objekt, který představuje typ NumberFormatInfo. Metoda GetFormat pak vrátí objekt NumberFormatInfo, který poskytuje informace o formátu s
parametru. Existují tři způsoby použití parametru provider
k zadání vlastních informací o formátování do operace analýzy:
Můžete předat objekt CultureInfo, který představuje jazykovou verzi, která poskytuje informace o formátování. Jeho GetFormat metoda vrátí objekt NumberFormatInfo, který poskytuje číselné informace o formátování pro danou jazykovou verzi.
Můžete předat skutečný NumberFormatInfo objekt, který poskytuje informace o číselném formátování. (Její implementace GetFormat se vrátí sama.)
Můžete předat vlastní objekt, který implementuje IFormatProvider. Jeho GetFormat metoda vytvoří instanci a vrátí objekt NumberFormatInfo, který poskytuje informace o formátování.
Pokud je provider
null
, formátování s
se interpretuje na základě NumberFormatInfo objektu aktuální jazykové verze.
Pokud je s
mimo rozsah datového typu Single, vyvolá metoda OverflowException v rozhraní .NET Framework a .NET Core 2.2 a starších verzích. V .NET Core 3.0 a novějších verzích vrátí Single.NegativeInfinity, pokud je s
menší než Single.MinValue a Single.PositiveInfinity, pokud je s
větší než Single.MaxValue.
Pokud je v parametru s
během operace analýzy zjištěn oddělovač a platné oddělovače desetinných míst nebo čísel a oddělovačů 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 rozhraní .NET