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 reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
Przeciążenia
TryParse(String, IFormatProvider, Single) |
Próbuje przeanalizować ciąg w wartości. |
TryParse(ReadOnlySpan<Char>, Single) |
Konwertuje reprezentację ciągu liczby w zakresie znaków na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
TryParse(String, Single) |
Konwertuje reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single) |
Próbuje przeanalizować zakres znaków UTF-8 w wartość. |
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single) |
Próbuje przeanalizować zakres znaków w wartości. |
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Single) |
Próbuje przeanalizować zakres znaków UTF-8 w wartość. |
TryParse(ReadOnlySpan<Byte>, Single) |
Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. |
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. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
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. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
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ła awarię.
TryParse(String, IFormatProvider, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Próbuje przeanalizować ciąg w wartości.
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 na temat s
.
- result
- Single
Gdy ta metoda zwraca, zawiera wynik pomyślnego analizowania s
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli s
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Char>, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Konwertuje reprezentację ciągu liczby w zakresie znaków na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
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 zawierający reprezentację ciągu liczby do przekonwertowania.
- result
- Single
Gdy ta metoda zwróci wartość , zawiera zmiennoprzecinkową liczbę 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 parametr s
jest null
lub pusty lub nie jest liczbą w prawidłowym formacie. Jeśli s
jest prawidłową liczbą mniejszą niż Single.MinValue, result
jest NegativeInfinity. Jeśli s
jest prawidłową liczbą większą niż Single.MaxValue, result
jest PositiveInfinity. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; 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ła awarię.
Dotyczy
TryParse(String, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Konwertuje reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
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 przekonwertowania.
- result
- Single
Gdy ta metoda zwróci wartość zmiennoprzecinkową o pojedynczej precyzji, odpowiada wartości liczbowej lub symbolowi zawartemu w 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 parametr s
jest null
lub Empty lub nie jest liczbą w prawidłowym formacie. Nie powiedzie się również w programach .NET Framework i .NET Core 2.2 i starszych wersjach, jeśli s
reprezentuje liczbę mniejszą niż Single.MinValue lub nowszą niż single.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Przykłady
W poniższym przykładzie użyto metody TryParse(String, Single), aby przekonwertować reprezentacje ciągów wartości liczbowych na Single wartości. Przyjęto założenie, ż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 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ła awarię.
To przeciążenie różni się od metody Single.Parse(String) przez zwrócenie wartości logicznej, która wskazuje, czy operacja analizowania zakończyła się pomyślnie, zamiast zwracać przeanalizowaną wartość liczbową. Eliminuje to konieczność użycia obsługi wyjątków w celu przetestowania FormatException w przypadku, gdy s
jest nieprawidłowa i nie można jej pomyślnie przeanalizować.
Parametr s
może zawierać PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol (porównanie ciągów jest uwzględniane wielkość liter) lub ciąg formularza:
[ws] [podpis] [cyfry całkowite,]cyfry-całkowite[.[ fractional-digits]][e[sign]exponential-digits][ws]
Elementy w nawiasach kwadratowych są opcjonalne. W poniższej tabeli opisano każdy element.
Pierwiastek | Opis |
---|---|
ws | Seria znaków odstępów. |
podpisywania |
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, jeśli istnieją cyfry ułamkowe. |
, | Symbol separatora grup specyficznych dla kultury. |
. | Symbol separatora dziesiętnego specyficznego dla kultury. |
cyfry ułamkowe | Seria znaków liczbowych z zakresu od 0 do 9, która określa część ułamkową liczby. |
E | Wielkie lub małe litery znak "e", który 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 flag NumberStyles.Float i NumberStyles.AllowThousands. Oznacza to, że odstępy i tysiące separatorów są dozwolone, ale symbole waluty nie są. Aby jawnie zdefiniować elementy (takie jak symbole waluty, separatory tysięcy i odstępy), które mogą być obecne w s
, użyj przeciążenia metody TryParse(String, NumberStyles, IFormatProvider, Single).
Parametr s
jest analizowany przy użyciu informacji o formatowaniu w obiekcie NumberFormatInfo zainicjowanym 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 przeciążenia metody TryParse(String, NumberStyles, IFormatProvider, Single).
Zazwyczaj jeśli przekażesz metodę Single.TryParse ciąg utworzony przez wywołanie metody Single.ToString, zwracana jest oryginalna wartość Single. Jednak ze względu na utratę dokładności wartości mogą nie być równe.
Jeśli s
jest poza zakresem typu danych Single, metoda zwraca false
w programach .NET Framework i .NET Core 2.2 i starszych wersjach. W programie .NET Core 3.0 lub nowszym zwraca Single.NegativeInfinity, jeśli s
jest mniejsza niż Single.MinValue i Single.PositiveInfinity, jeśli s
jest 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 grup. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.
Zobacz też
Dotyczy
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Próbuje przeanalizować zakres znaków UTF-8 w wartość.
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>
Zakres znaków UTF-8 do przeanalizowania.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text
.
- result
- Single
Po powrocie zawiera wynik pomyślnego analizowania utf8Text
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli utf8Text
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
- Źródło:
- Single.cs
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 na temat s
.
- result
- Single
Gdy ta metoda zwraca wartość , zawiera wynik pomyślnego analizowania s
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli s
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Próbuje przeanalizować zakres znaków UTF-8 w wartość.
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>
Zakres znaków UTF-8 do przeanalizowania.
- style
- NumberStyles
Bitowa kombinacja stylów liczbowych, które mogą być obecne w utf8Text
.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text
.
- result
- Single
Po powrocie zawiera wynik pomyślnego analizowania utf8Text
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli utf8Text
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Byte>, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji.
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>
Zakres znaków UTF-8 tylko do odczytu, który zawiera liczbę do przekonwertowania.
- result
- Single
Gdy ta metoda zwraca wartość zmiennoprzecinkową o pojedynczej precyzji, odpowiada wartości liczbowej lub symbolowi zawartemu w utf8Text
, 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 utf8Text
jest Empty lub nie jest w prawidłowym formacie. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w wyniku zostanie zastąpiona.
Zwraca
true
, jeśli utf8Text
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
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 konwersji. 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 AllowThousands.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s
.
- result
- Single
Gdy ta metoda zwraca, zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną wartości liczbowej lub symbolowi zawartej w 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 parametr s
jest null
lub Empty, nie jest w formacie zgodnym z style
, reprezentuje liczbę mniejszą niż Single.MinValue lub większą niż Single.MaxValuelub jeśli style
nie jest prawidłową kombinacją NumberStyles wyliczonych stałych. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; 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ła awarię.
Dotyczy
TryParse(String, NumberStyles, IFormatProvider, Single)
- Źródło:
- Single.cs
- Źródło:
- Single.cs
- Źródło:
- Single.cs
Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
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 AllowThousands.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s
.
- result
- Single
Gdy ta metoda zwraca, zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną wartości liczbowej lub symbolowi zawartej w s
, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja nie powiedzie się, jeśli parametr s
jest null
lub Empty, nie jest w formacie zgodnym z style
lub jeśli style
nie jest prawidłową kombinacją stałych wyliczenia NumberStyles. Nie powiedzie się również w programie .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
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Wyjątki
Przykłady
W poniższym przykładzie pokazano użycie metody Single.TryParse(String, NumberStyles, IFormatProvider, Single) 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ła awarię.
To przeciążenie różni się od metody Parse(String, NumberStyles, IFormatProvider) przez zwrócenie wartości logicznej, która wskazuje, czy operacja analizowania zakończyła się pomyślnie, zamiast zwracać przeanalizowaną wartość liczbową. Eliminuje to konieczność użycia obsługi wyjątków w celu przetestowania FormatException w przypadku, gdy s
jest nieprawidłowa i nie można jej pomyślnie przeanalizować.
Parametr style
definiuje dozwolony format parametru s
, aby operacja analizy zakończyła się pomyślnie. Musi to być kombinacja flag bitowych z wyliczenia NumberStyles. Następujące NumberStyles członków nie są obsługiwane:
Parametr s
może zawierać PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol dla kultury wskazanej przez provider
. Ponadto w zależności od wartości style
parametr s
może zawierać następujące elementy:
[ws] [$] [podpis] [cyfry całkowite,]cyfry-całkowitoliczkowe[.ułamkowe cyfry][e[znak]cyfry wykładnicze][ws]
Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W poniższej tabeli opisano każdy element.
Pierwiastek | Opis |
---|---|
ws | Opcjonalne białe znaki. 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 specyficznej dla kultury. Jego pozycja w ciągu jest definiowana przez właściwości NumberFormatInfo.CurrencyNegativePattern lub NumberFormatInfo.CurrencyPositivePattern obiektu NumberFormatInfo zwrócone przez metodę IFormatProvider.GetFormat parametru provider . Symbol waluty może pojawić się w s , jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol. |
podpisywania |
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ą być używane w s , aby wskazać wartość ujemną, jeśli style zawiera flagę NumberStyles.AllowParentheses. |
cyfry całkowite | Seria cyfr z zakresu od 0 do 9, która określa integralną część liczby. Cyfry całkowite mogą być nieobecne, jeśli istnieją cyfry ułamkowe. |
, | Symbol separatora tysięcy specyficzny dla kultury. Symbol separatora tysięcy bieżącej kultury może pojawić się w s , jeśli style zawiera flagę NumberStyles.AllowThousands. |
. | Symbol separatora dziesiętnego specyficznego dla kultury. Symbol punktu dziesiętnego bieżącej kultury może pojawić się w s , jeśli style zawiera flagę NumberStyles.AllowDecimalPoint. |
cyfry ułamkowe | Seria cyfr od 0 do 9 określająca część ułamkową liczby. Cyfry ułamkowe mogą być wyświetlane w 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 | Seria cyfr z zakresu od 0 do 9, która określa wykładnik. |
Nuta
Wszystkie znaki NUL (U+0000) w s
są ignorowane przez operację analizowania, niezależnie od wartości argumentu style
.
Ciąg zawierający tylko cyfry (który odpowiada stylowi NumberStyles.None) zawsze analizuje się pomyślnie, jeśli znajduje się w zakresie typu Single. Pozostałe elementy członkowskie System.Globalization.NumberStyles, które mogą być, ale nie muszą być obecne w ciągu wejściowym. W poniższej tabeli przedstawiono, jak poszczególne flagi NumberStyles wpływają na elementy, które mogą być obecne w s
.
Wartość NumberStyles | Elementy dozwolone w s oprócz cyfr |
---|---|
None | cyfry całkowite tylko element. |
AllowDecimalPoint | . i cyfry ułamkowe elementów. |
AllowExponent | Parametr s może również używać notacji wykładniczej. Ta flaga sama obsługuje wartości w postaci cyfr całkowitychEcyfr wykładniczych; 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 s . |
AllowTrailingWhite | Element ws na końcu s . |
AllowLeadingSign | Element podpisywania |
AllowTrailingSign | Element na końcu s . |
AllowParentheses | Znak element w postaci nawiasów otaczających wartość liczbową. |
AllowThousands | Element ,. |
AllowCurrencySymbol | Element $. |
Currency | Cały. Parametr s nie może reprezentować liczby szesnastkowej lub liczby w notacji wykładniczej. |
Float | Element ws na początku lub na końcu s znak na początku s i . symbol. Parametr s może również używać notacji wykładniczej. |
Number | Elementy separatora ws , sign , tysięcy (), i dziesiętnego (.). |
Any | Wszystkie style, z wyjątkiem s nie mogą reprezentować liczby szesnastkowej. |
Parametr provider
jest implementacją IFormatProvider, której metoda GetFormat zwraca obiekt NumberFormatInfo, który zapewnia informacje o formatowaniu specyficznym dla kultury. Po wywołaniu metody TryParse(String, NumberStyles, IFormatProvider, Single) wywołuje metodę GetFormat parametru provider
i przekazuje do niego obiekt Type reprezentujący typ NumberFormatInfo. Następnie metoda GetFormat zwraca obiekt NumberFormatInfo zawierający informacje o formacie parametru s
. Istnieją trzy sposoby użycia parametru provider
do podawania niestandardowych informacji formatowania do operacji analizowania:
Można przekazać obiekt CultureInfo reprezentujący kulturę, która dostarcza informacje o formatowaniu. Metoda GetFormat zwraca obiekt NumberFormatInfo, który udostępnia informacje o formatowaniu liczbowym dla tej kultury.
Można przekazać rzeczywisty obiekt NumberFormatInfo, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat po prostu zwraca się.
Można przekazać obiekt niestandardowy, który implementuje IFormatProvider. Metoda GetFormat tworzy wystąpienie i zwraca obiekt NumberFormatInfo, który udostępnia informacje o formatowaniu.
Jeśli provider
jest null
, formatowanie s
jest interpretowane na podstawie obiektu NumberFormatInfo bieżącej kultury.
Jeśli s
jest poza zakresem typu danych Single, metoda zgłasza OverflowException w programach .NET Framework i .NET Core 2.2 i starszych wersjach. W programie .NET Core 3.0 lub nowszym zwraca Single.NegativeInfinity, jeśli s
jest mniejsza niż Single.MinValue i Single.PositiveInfinity, jeśli s
jest 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 grup. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.