Single.TryParse Metoda

Definicja

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(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(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(ReadOnlySpan<Byte>, IFormatProvider, Single)

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

TryParse(String, IFormatProvider, Single)

Próbuje przeanalizować ciąg w wartości.

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

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

TryParse(ReadOnlySpan<Byte>, Single)

Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na równoważność liczb 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. 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 równoważność liczb zmiennoprzecinkowych o pojedynczej precyzji. Zwracana wartość wskazuje, czy konwersja powiodła się czy nie.

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.

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

result
Single

Gdy ta metoda zwraca wartość , zawiera wynik pomyślnej analizy s, lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli s została pomyślnie przeanalizowana; 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 zwraca wartość , zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną parametrowi s , jeśli konwersja powiodła się lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, s jeśli parametr jest null 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

truejeś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, 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 przekonwertowania.

result
Single

Gdy ta metoda zwraca wartość zmiennoprzecinkową o pojedynczej precyzji, odpowiada wartości liczbowej lub symbolowi zawartemu w smetodzie , jeśli konwersja powiodła się lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, s jeśli parametr jest null lub Empty nie jest liczbą w prawidłowym formacie. Niepowodzenie również w przypadku .NET Framework i platformy .NET Core 2.2 i starszych wersji, 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

truejeśli s pomyślnie przekonwertowano; w przeciwnym razie . false

Przykłady

W poniższym przykładzie użyto TryParse(String, Single) 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 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 Single.Parse(String) 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 s może zawierać PositiveInfinitySymbolwartość , NaNSymbolNegativeInfinitySymbol(porównywanie ciągów jest uwzględniana wielkość liter) lub ciąg formularza:

[ws] [podpis] [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 określająca część ułamkową liczby.
E Wielka 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 białe znaki), które mogą być obecne w selemecie , 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ści false .NET Framework i .NET Core 2.2 i starsze wersje. 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.

Zobacz też

Dotyczy

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

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

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury.utf8Text

result
Single

Po powrocie utf8Text zawiera wynik pomyślnego analizowania lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli utf8Text została pomyślnie przeanalizowana; w przeciwnym razie . false

Dotyczy

TryParse(String, IFormatProvider, Single)

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

result
Single

Gdy ta metoda zwraca wartość , zawiera wynik pomyślnej analizy s lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli s została pomyślnie przeanalizowana; w przeciwnym razie . false

Dotyczy

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

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

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

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

result
Single

Po powrocie utf8Text zawiera wynik pomyślnego analizowania lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli utf8Text została pomyślnie przeanalizowana; w przeciwnym razie . false

Dotyczy

TryParse(ReadOnlySpan<Byte>, Single)

Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na równoważność liczb 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ść, zawiera jedną precyzję liczby zmiennoprzecinkowej równoważną wartości liczbowej lub symbolu zawartego, utf8Text jeśli konwersja powiodła się lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli element utf8Text jest Empty lub nie ma prawidłowego formatu. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w wyniku zostanie zastąpiona.

Zwraca

truejeśli utf8Text pomyślnie przekonwertowano; w przeciwnym razie . false

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, który zawiera 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 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 selemencie , 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, 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

truejeś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 odpowiednik 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 selemencie , 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 stylelub 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 została przekonwertowana; w przeciwnym razie false.

Wyjątki

style nie jest wartością NumberStyles .

-lub-

style jest wartością AllowHexSpecifier .

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 styleparametru 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 sznaku na początku si symbolu . Parametr s może również używać notacji wykładniczej.
Number Elementy separatora , tysięcy (,) i punktu dziesiętnego (.).wssign
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 informacji o formatowaniu specyficznym dla kultury. TryParse(String, NumberStyles, IFormatProvider, Single) Po wywołaniu metody wywołuje metodę provider parametru GetFormat i przekazuje go do obiektu reprezentującego TypeNumberFormatInfo typ. Następnie GetFormat metoda zwraca NumberFormatInfo obiekt, który zawiera informacje o formacie parametru s . Istnieją trzy sposoby używania parametru provider do podawania niestandardowych informacji o formatowaniu do operacji analizowania:

  • Można przekazać obiekt reprezentujący kulturę CultureInfo , która dostarcza informacje o formatowaniu. Metoda GetFormat zwraca NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu liczbowym dla tej kultury.

  • Możesz przekazać rzeczywisty NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat po prostu zwraca się).

  • Można przekazać obiekt niestandardowy, który implementuje IFormatProviderobiekt . Metoda GetFormat tworzy wystąpienie i zwraca NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu.

Jeśli provider jest to null, formatowanie jest s interpretowane na NumberFormatInfo podstawie obiektu bieżącej kultury.

Jeśli s jest poza zakresem Single typu danych, metoda zgłasza OverflowException wartość w .NET Framework i .NET Core 2.2 i starszych wersjach. 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