Single.TryParse Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konwertuje ciąg reprezentujący liczbę na odpowiadającą mu liczbę zmiennoprzecinkową pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie.
Przeciążenia
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single) |
Próbuje przeanalizować zakres znaków w wartości. |
TryParse(String, Single) |
Konwertuje ciąg reprezentujący liczbę na odpowiadającą mu liczbę zmiennoprzecinkową pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie. |
TryParse(String, IFormatProvider, Single) |
Próbuje przeanalizować ciąg w wartość. |
TryParse(ReadOnlySpan<Char>, Single) |
Konwertuje reprezentację ciągu liczby w zakresie znaków na równoważność liczb zmiennoprzecinkowych o pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single) |
Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie. |
TryParse(String, NumberStyles, IFormatProvider, Single) |
Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie. |
Uwagi
W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowało niepowodzenie.
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)
Próbuje przeanalizować zakres znaków w wartości.
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>
Zakres znaków do przeanalizowania.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury dotyczące s
elementu .
- result
- Single
Gdy ta metoda zostanie zwrócona, zawiera wynik pomyślnego analizowania s
wartości lub niezdefiniowanej wartości w przypadku niepowodzenia.
Zwraca
true
jeśli s
został pomyślnie przeanalizowany; w przeciwnym razie false
.
Dotyczy
TryParse(String, Single)
Konwertuje ciąg reprezentujący liczbę na odpowiadającą mu liczbę zmiennoprzecinkową pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie.
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
Ciąg reprezentujący liczbę do konwersji.
- result
- Single
Gdy ta metoda zostanie zwrócona, zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną wartości liczbowej lub symbolu zawartej w s
metodzie , jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli s
parametr jest null
lub Empty nie jest liczbą w prawidłowym formacie. Kończy się to również niepowodzeniem w wersji .NET Framework i .NET Core 2.2 i starszych, jeśli s
reprezentuje liczbę mniejszą niż Single.MinValue lub większa niż Single.MaxValue. Ten parametr jest przekazywany jako niezainicjowany; każda wartość pierwotnie dostarczona w pliku result
zostanie zastąpiona.
Zwraca
true
jeśli s
pomyślnie została przekonwertowana; w przeciwnym razie false
.
Przykłady
W poniższym przykładzie TryParse(String, Single) użyto metody , aby przekonwertować reprezentacje ciągów wartości liczbowych na Single wartości. Zakłada się, że en-US jest bieżącą kulturą.
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
Uwagi
W programie .NET Core 3.0 i nowszych wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie z wymaganiami specyfikacji IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować wynik awarii.
To przeciążenie różni się od Single.Parse(String) metody, zwracając wartość logiczną wskazującą, czy operacja analizy zakończyła się pomyślnie, zamiast zwracać przeanalizowaną wartość liczbową. Eliminuje to konieczność użycia obsługi wyjątków do testowania dla FormatException zdarzenia, które s
jest nieprawidłowe i nie można go pomyślnie przeanalizować.
Parametr s
może zawierać PositiveInfinitySymbolciąg , ( NegativeInfinitySymbolNaNSymbol porównanie ciągów jest uwzględniane wielkość liter) lub ciąg formularza:
[ws] [znak] [cyfry całkowite,]cyfry całkowite[.[ ułamkowe cyfry]][e[znak]cyfry wykładnicze][ws]
Elementy w nawiasach kwadratowych są opcjonalne. W tabeli poniżej opisano każdy element.
Element | Opis |
---|---|
Ws | Ciąg znaków spacji. |
sign | Znak ujemny lub symbol znaku dodatniego. |
cyfry-całkowite | Seria znaków liczbowych z zakresu od 0 do 9, która określa integralną część liczby. Cyfry całkowite mogą być nieobecne w przypadku cyfr ułamkowych. |
, | Symbol separatora grupy specyficzny dla kultury. |
. | Symbol dziesiętny specyficzny dla kultury. |
cyfry-ułamkowe | Seria znaków liczbowych z zakresu od 0 do 9, która określa część ułamkową liczby. |
E | Wielka litera lub mała litera "e", która wskazuje notację wykładniczą (naukową). |
cyfry-wykładnicze | Seria znaków liczbowych z zakresu od 0 do 9, która określa wykładnik. |
Parametr s
jest interpretowany przy użyciu kombinacji NumberStyles.Float flag i NumberStyles.AllowThousands . Oznacza to, że biały znak i separatory tysięczne są dozwolone, ale symbole walut nie. Aby jawnie zdefiniować elementy (takie jak symbole waluty, separatory tysięcy i odstępy), które mogą być obecne w s
programie , użyj TryParse(String, NumberStyles, IFormatProvider, Single) przeciążenia metody.
Parametr s
jest analizowany przy użyciu informacji o formatowaniu w obiekcie zainicjowanym NumberFormatInfo dla bieżącej kultury systemu. Aby uzyskać więcej informacji, zobacz NumberFormatInfo.CurrentInfo. Aby przeanalizować ciąg przy użyciu informacji o formatowaniu innej określonej kultury, użyj TryParse(String, NumberStyles, IFormatProvider, Single) przeciążenia metody.
Zwykle, jeśli przekazujesz Single.TryParse metodę ciąg, który jest tworzony przez wywołanie Single.ToString metody, zwracana jest oryginalna Single wartość. Jednak ze względu na utratę precyzji wartości mogą być różne.
Jeśli s
jest poza zakresem Single typu danych, metoda zwraca wartość false
.NET Framework i .NET Core 2.2 i starszych wersji. W programie .NET Core 3.0 i nowszych wersjach zwraca wartość Single.NegativeInfinity , jeśli s
jest mniejsza niż i Single.PositiveInfinity jeśli s
jest większa niż Single.MaxValueSingle.MinValue .
Jeśli separator napotkany w parametrze s
podczas operacji analizy, a odpowiednia waluta lub separatory liczb dziesiętne i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grupy. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.
Zobacz też
Dotyczy
TryParse(String, IFormatProvider, Single)
Próbuje przeanalizować ciąg w wartość.
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
Ciąg do analizy.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury dotyczące s
elementu .
- result
- Single
Gdy ta metoda zostanie zwrócona, zawiera wynik pomyślnego analizowania s
lub niezdefiniowanej wartości po awarii.
Zwraca
true
jeśli s
został pomyślnie przeanalizowany; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Char>, Single)
Konwertuje reprezentację ciągu liczby w zakresie znaków na równoważność liczb zmiennoprzecinkowych o pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie.
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>
>Zakres znaków, który zawiera reprezentację ciągu liczby do przekonwertowania.
- result
- Single
Gdy ta metoda zostanie zwrócona, zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną parametrowi s
, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli s
parametr jest null
pusty lub nie jest liczbą w prawidłowym formacie. Jeśli s
jest prawidłową liczbą mniejszą niż Single.MinValue, result
to NegativeInfinity. Jeśli s
jest prawidłową liczbą większą niż Single.MaxValue, result
to PositiveInfinity. Ten parametr jest przekazywany jako niezainicjowany; każda wartość pierwotnie dostarczona w pliku result
zostanie zastąpiona.
Zwraca
true
jeśli s
pomyślnie została przekonwertowana; w przeciwnym razie false
.
Uwagi
W programie .NET Core 3.0 i nowszych wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie z wymaganiami specyfikacji IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować wynik awarii.
Dotyczy
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single)
Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie.
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>
Zakres znaków tylko do odczytu zawierający liczbę do przekonwertowania. Zakres jest interpretowany przy użyciu stylu określonego przez style
.
- style
- NumberStyles
Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format .s
Typowa wartość do określenia jest Float połączona z elementem AllowThousands.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.s
- result
- Single
Gdy ta metoda zwróci wartość, zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną wartości liczbowej lub symbolu zawartej w s
metodzie , jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, s
jeśli parametr ma null
wartość lub Empty, nie jest w formacie zgodnym z parametrem style
, reprezentuje liczbę mniejszą niż Single.MinValue lub większą niż Single.MaxValue lub jeśli style
nie jest prawidłową kombinacją NumberStyles wyliczeń stałych. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
jeśli s
pomyślnie przekonwertowano; w przeciwnym razie . false
Uwagi
W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowało niepowodzenie.
Dotyczy
TryParse(String, NumberStyles, IFormatProvider, Single)
Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na równoważność liczb zmiennoprzecinkowych o pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie.
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
Ciąg reprezentujący liczbę do przekonwertowania.
- style
- NumberStyles
Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format .s
Typowa wartość do określenia jest Float połączona z elementem AllowThousands.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.s
- result
- Single
Gdy ta metoda zwraca wartość , zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną wartości liczbowej lub symbolowi zawartej w s
elemencie , jeśli konwersja powiodła się lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, s
jeśli parametr ma null
wartość lub Empty, nie jest w formacie zgodnym z parametrem style
lub jeśli style
nie jest prawidłową kombinacją NumberStyles stałych wyliczenia. Niepowodzenie występuje również w .NET Framework lub .NET Core 2.2 i starszych wersjach, jeśli s
reprezentuje liczbę mniejszą niż Single.MinValue lub większą niż Single.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
jeśli s
pomyślnie przekonwertowano; w przeciwnym razie . false
Wyjątki
Przykłady
W poniższym przykładzie pokazano użycie Single.TryParse(String, NumberStyles, IFormatProvider, Single) metody do analizowania reprezentacji ciągów liczb, które mają określony styl i są formatowane przy użyciu konwencji określonej kultury.
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'.
Uwagi
W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowało niepowodzenie.
To przeciążenie różni się od Parse(String, NumberStyles, IFormatProvider) metody, zwracając wartość logiczną, która wskazuje, czy operacja analizy powiodła się zamiast zwracać przeanalizowaną wartość liczbową. Eliminuje konieczność użycia obsługi wyjątków w celu przetestowania elementu FormatException w przypadku nieprawidłowego s
i nie można go pomyślnie przeanalizować.
Parametr style
definiuje dozwolony format parametru s
dla operacji analizowania, aby operacja zakończyła się pomyślnie. Musi to być kombinacja flag bitowych z NumberStyles wyliczenia. Następujące NumberStyles elementy członkowskie nie są obsługiwane:
Parametr s
może zawierać PositiveInfinitySymbolwartość , NaNSymbolNegativeInfinitySymboldla kultury wskazanej przez provider
. Ponadto w zależności od wartości style
parametru s
parametr może zawierać następujące elementy:
[ws] [$] [podpis] [cyfry-całkowite,]cyfry-całkowite[.liczba-ułamkowe][e[znak]cyfry-wykładnicze][ws]
Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.
Element | Opis |
---|---|
Ws | Opcjonalny odstęp. Białe znaki mogą pojawić się na początku s , jeśli style zawiera flagę NumberStyles.AllowLeadingWhite . Może pojawić się na końcu s , jeśli style zawiera flagę NumberStyles.AllowTrailingWhite . |
$ | Symbol waluty specyficzny dla kultury. Jego pozycja w ciągu jest definiowana przez NumberFormatInfo.CurrencyNegativePattern właściwości NumberFormatInfo lub NumberFormatInfo.CurrencyPositivePattern obiektu zwróconego przez IFormatProvider.GetFormat metodę parametru provider . Symbol waluty może pojawić się, s jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol . |
sign | Opcjonalny znak. Znak może pojawić się na początku s , jeśli style zawiera flagę NumberStyles.AllowLeadingSign , i może pojawić się na końcu s , jeśli style zawiera flagę NumberStyles.AllowTrailingSign . Nawiasy mogą służyć s do wskazywania wartości ujemnej, jeśli style zawiera flagę NumberStyles.AllowParentheses . |
cyfry-całkowite | Ciąg cyfr od 0 do 9, które określają jej część całkowitą. Cyfry całkowite mogą być nieobecne w przypadku cyfr ułamkowych. |
, | Symbol separatora tysięcy specyficzny dla kultury. Symbol separatora tysięcy bieżącej kultury może pojawić się, s jeśli style zawiera flagę NumberStyles.AllowThousands . |
. | Symbol dziesiętny specyficzny dla kultury. Symbol punktu dziesiętnego bieżącej kultury może pojawić się, s jeśli style zawiera flagę NumberStyles.AllowDecimalPoint . |
cyfry-ułamkowe | Ciąg cyfr od 0 do 9, które określają część ułamkową liczby. Cyfry ułamkowe mogą pojawiać się, s jeśli style zawiera flagę NumberStyles.AllowDecimalPoint . |
E | Znak e lub E, który wskazuje, że s może reprezentować liczbę przy użyciu notacji wykładniczej. Parametr s może reprezentować liczbę w notacji wykładniczej, jeśli styl zawiera flagę NumberStyles.AllowExponent . |
cyfry-wykładnicze | Ciąg cyfr od 0 do 9, które określają wykładnik potęgi. |
Uwaga
Wszystkie znaki NUL zakończenia (U+0000) w s
obiekcie są ignorowane przez operację analizowania, niezależnie od wartości argumentu style
.
Ciąg z tylko cyframi (odpowiadający NumberStyles.None stylowi) zawsze analizuje się pomyślnie, jeśli znajduje się w zakresie Single typu. Pozostałe System.Globalization.NumberStyles elementy członkowskie kontrolują, które mogą być, ale nie muszą być obecne w ciągu wejściowym. W poniższej tabeli przedstawiono, jak poszczególne NumberStyles flagi wpływają na elementy, które mogą być obecne w programie s
.
Wartość wyliczenia NumberStyles | Dodatkowe (poza cyframi) elementy dozwolone w parametrze s |
---|---|
None | Tylko element całkowitocyfrowy . |
AllowDecimalPoint | Elementy . i fractional-digits . |
AllowExponent | Parametr s może również używać notacji wykładniczej. Ta flaga sama obsługuje wartości w postaci cyfr całkowitychEwykładniczo-cyfrowych; Dodatkowe flagi są potrzebne do pomyślnego analizowania ciągów w notacji wykładniczej z takimi elementami jak znaki dodatnie lub ujemne i symbole punktów dziesiętnych. |
AllowLeadingWhite | Element ws na początku elementu s . |
AllowTrailingWhite | Element ws na końcu elementu s . |
AllowLeadingSign | Element znaku na początku elementu s . |
AllowTrailingSign | Element znaku na końcu elementu s . |
AllowParentheses | Element znaku w postaci nawiasów otaczających wartość liczbową. |
AllowThousands | Element , . |
AllowCurrencySymbol | Element $ . |
Currency | Wszystkie. Parametr s nie może reprezentować liczby szesnastkowej ani liczby w notacji wykładniczej. |
Float | Element ws na początku lub na końcu s znaku na początku elementu s i symbolu . Parametr s może również używać notacji wykładniczej. |
Number | ws Elementy separatora , sign tysięcy (,) i separatora dziesiętnego (.). |
Any | Wszystkie style, z wyjątkiem s nie mogą reprezentować liczby szesnastkowej. |
Parametr provider
jest implementacją IFormatProvider , której GetFormat metoda zwraca NumberFormatInfo obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury. Po wywołaniu TryParse(String, NumberStyles, IFormatProvider, Single) metody wywołuje provider
metodę parametru GetFormat i przekazuje go Type do obiektu reprezentującego NumberFormatInfo typ. Następnie GetFormat metoda zwraca NumberFormatInfo obiekt, który dostarcza informacje o formacie parametru s
. Istnieją trzy sposoby użycia parametru provider
w celu dostarczenia niestandardowych informacji o formatowaniu do operacji analizy:
Można przekazać obiekt reprezentujący kulturę CultureInfo dostarczającą informacje o formatowaniu. Metoda GetFormat zwraca NumberFormatInfo obiekt, który dostarcza informacje o formatowaniu liczbowym dla tej kultury.
Można przekazać rzeczywisty NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat samego zwraca się).
Można przekazać obiekt niestandardowy, który implementuje IFormatProviderelement . Metoda GetFormat tworzy wystąpienie i zwraca NumberFormatInfo obiekt, który dostarcza informacje o formatowaniu.
Jeśli provider
parametr ma null
wartość , formatowanie s
jest interpretowane na NumberFormatInfo podstawie obiektu bieżącej kultury.
Jeśli s
typ danych jest poza zakresemSingle, metoda zgłasza wyjątek OverflowException w wersjach .NET Framework i .NET Core 2.2 i starszych. W programie .NET Core 3.0 i nowszych wersjach zwraca Single.NegativeInfinity wartość , jeśli s
wartość jest mniejsza niż Single.MinValue i Single.PositiveInfinity jest s
większa niż Single.MaxValue.
Jeśli separator napotkany w parametrze s
podczas operacji analizy, a odpowiednia waluta lub separatory liczbowe i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grupy. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.