Single.TryParse Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Converte a representação da cadeia de caracteres de um número no número de ponto flutuante de precisão simples equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.
Sobrecargas
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single) |
Tenta analisar um intervalo de caracteres em um valor. |
TryParse(ReadOnlySpan<Char>, Single) |
Converte a representação de cadeia de caracteres de um número em um intervalo de caracteres em um número de ponto flutuante de precisão simples equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou. |
TryParse(String, Single) |
Converte a representação da cadeia de caracteres de um número no número de ponto flutuante de precisão simples equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single) |
Tenta analisar um intervalo de caracteres UTF-8 em um valor. |
TryParse(String, IFormatProvider, Single) |
Tenta analisar uma cadeia de caracteres em um valor. |
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Single) |
Tenta analisar um intervalo de caracteres UTF-8 em um valor. |
TryParse(ReadOnlySpan<Byte>, Single) |
Tenta converter um intervalo de caracteres UTF-8 que contém a representação de cadeia de caracteres de um número em seu número de ponto flutuante de precisão única equivalente. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single) |
Converte a representação de intervalo de um número em um formato específico da cultura e um estilo especificados em seu número de ponto flutuante de precisão simples equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou. |
TryParse(String, NumberStyles, IFormatProvider, Single) |
Converte a representação de cadeia de caracteres de um número em um estilo e formato específico da cultura especificados em seu equivalente de número de ponto flutuante de precisão simples. Um valor retornado indica se a conversão foi bem-sucedida ou falhou. |
Comentários
No .NET Core 3.0 e posterior, os valores que são muito grandes para representar são arredondados para PositiveInfinity ou NegativeInfinity conforme exigido pela especificação do IEEE 754. Em versões anteriores, incluindo .NET Framework, a análise de um valor muito grande para representar resultou em falha.
TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
- Origem:
- Single.cs
Tenta analisar um intervalo de caracteres em um valor.
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
Parâmetros
- s
- ReadOnlySpan<Char>
O intervalo de caracteres a serem analisados.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas à cultura sobre s
.
- result
- Single
Quando esse método retorna, contém o resultado da análise s
com êxito ou um valor indefinido sobre a falha.
Retornos
true
se s
tiver sido analisado com êxito; caso contrário, false
.
Aplica-se a
TryParse(ReadOnlySpan<Char>, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
- Origem:
- Single.cs
Converte a representação de cadeia de caracteres de um número em um intervalo de caracteres em um número de ponto flutuante de precisão simples equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.
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
Parâmetros
- s
- ReadOnlySpan<Char>
>Um intervalo de caracteres que contém a representação de cadeia de caracteres do número a ser convertido.
- result
- Single
Quando este método é retornado, contém o número de ponto flutuante de precisão simples equivalente do parâmetro s
se a conversão foi bem-sucedida ou zero se a conversão falhou. A conversão falhará se o parâmetro s
for null
, vazio ou se não for um número em formato válido. Se s
for um número válido menor que Single.MinValue, result
será NegativeInfinity. Se s
for um número válido maior que Single.MaxValue, result
será PositiveInfinity. Este parâmetro é passado não inicializado; qualquer valor fornecido originalmente em result
será substituído.
Retornos
true
caso s
tenha sido convertido com êxito; do contrário, false
.
Comentários
No .NET Core 3.0 e posteriores, os valores que são muito grandes para representar são arredondados para PositiveInfinity ou NegativeInfinity conforme exigido pela especificação IEEE 754. Em versões anteriores, incluindo .NET Framework, a análise de um valor muito grande para representar resultou em falha.
Aplica-se a
TryParse(String, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
- Origem:
- Single.cs
Converte a representação da cadeia de caracteres de um número no número de ponto flutuante de precisão simples equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.
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
Parâmetros
- s
- String
Uma cadeia de caracteres que representa um número a ser convertido.
- result
- Single
Quando esse método é retornado, ele contém o número de ponto flutuante de precisão simples equivalente ao valor numérico ou símbolo contido em s
, caso a conversão seja bem-sucedida ou zero, caso a conversão falhe. A conversão falhará se o parâmetro s
for null
, Empty ou não for um número em formato válido. Ele também falha em .NET Framework e no .NET Core 2.2 e versões anteriores se s
representa um número menor que Single.MinValue ou maior que Single.MaxValue. Este parâmetro é passado não inicializado; qualquer valor fornecido originalmente em result
será substituído.
Retornos
true
caso s
tenha sido convertido com êxito; do contrário, false
.
Exemplos
O exemplo a seguir usa o TryParse(String, Single) método para converter as representações de cadeia de caracteres de valores numéricos em Single valores. Pressupõe que en-US é a cultura atual.
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
Comentários
No .NET Core 3.0 e posteriores, os valores que são muito grandes para representar são arredondados para PositiveInfinity ou NegativeInfinity conforme exigido pela especificação IEEE 754. Em versões anteriores, incluindo .NET Framework, a análise de um valor muito grande para representar resultou em falha.
Essa sobrecarga difere do Single.Parse(String) método retornando um valor booliano que indica se a operação de análise foi bem-sucedida em vez de retornar o valor numérico analisado. Ele elimina a necessidade de usar a identificação de exceções para testar um FormatException caso esse s
seja inválido e não possa ser analisado com êxito.
O s
parâmetro pode conter PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol (a comparação de cadeia de caracteres diferencia maiúsculas de minúsculas) ou uma cadeia de caracteres do formulário:
[ws] [sign] [integral-digits,]integral-digits[.[ fractional-digits]][e[sign]exponential-digits][ws]
Os elementos entre colchetes são opcionais. A tabela a seguir descreve cada elemento.
Elemento | Descrição |
---|---|
ws | Uma série de caracteres de espaço em branco. |
sign | Um símbolo de sinal negativo ou de sinal positivo. |
dígitos integrais | Uma série de caracteres numéricos que variam de 0 a 9 que especificam a parte integral do número. Os dígitos integrais podem estar ausentes caso sejam dígitos fracionários. |
, | Um símbolo de separador do grupo específico da cultura. |
. | Um símbolo de vírgula decimal específico de cultura. |
dígitos fracionários | Uma série de caracteres numéricos que variam de 0 a 9 que especificam a parte fracionária do número. |
E | Um caractere maiúsculo ou minúsculo 'e', que indica notação exponencial (científica). |
dígitos exponenciais | Uma série de caracteres numéricos que variam de 0 a 9 que especificam um expoente. |
O parâmetro s
é interpretado usando-se uma combinação dos sinalizadores NumberStyles.Float e NumberStyles.AllowThousands. Isso significa que o espaço em branco e os separadores de milhares são permitidos, mas os símbolos de moeda não. Para definir explicitamente os elementos (como símbolos de moeda, milhares de separadores e espaço em branco) que podem estar presentes no s
, use a sobrecarga do TryParse(String, NumberStyles, IFormatProvider, Single) método.
O parâmetro s
é analisado usando-se as informações de formatação em um objeto NumberFormatInfo que é inicializado para a cultura do sistema atual. Para obter mais informações, consulte NumberFormatInfo.CurrentInfo. Para analisar uma cadeia de caracteres usando as informações de formatação de alguma outra cultura especificada, use a sobrecarga do TryParse(String, NumberStyles, IFormatProvider, Single) método.
Normalmente, se você passa ao método Single.TryParse, uma cadeia de caracteres criada chamando-se o método Single.ToString, o valor Single original é retornado. No entanto, por conta de uma perda de precisão, os valores talvez não sejam iguais.
Se s
estiver fora do intervalo do tipo de Single dados, o método retornará false
em .NET Framework e no .NET Core 2.2 e versões anteriores. No .NET Core 3.0 e versões posteriores, ele retornará Single.NegativeInfinity se s
for menor que Single.MinValue e Single.PositiveInfinity se s
for maior que Single.MaxValue.
Caso um separador esteja no parâmetro s
durante uma operação de análise e a moeda aplicável ou os separadores de casa decimal e grupo sejam iguais, a operação de análise pressupõe que o separador seja um separador decimal, e não um separador de grupo. Para obter mais informações sobre separadores, consulte CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator e NumberGroupSeparator.
Confira também
Aplica-se a
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
Tenta analisar um intervalo de caracteres UTF-8 em um valor.
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
Parâmetros
- utf8Text
- ReadOnlySpan<Byte>
O intervalo de caracteres UTF-8 a serem analisados.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas à cultura sobre utf8Text
.
- result
- Single
No retorno, contém o resultado da análise utf8Text
com êxito ou de um valor indefinido em caso de falha.
Retornos
true
se utf8Text
tiver sido analisado com êxito; caso contrário, false
.
Aplica-se a
TryParse(String, IFormatProvider, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
- Origem:
- Single.cs
Tenta analisar uma cadeia de caracteres em um valor.
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
Parâmetros
- s
- String
A cadeia de caracteres a ser analisada.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas à cultura sobre s
.
- result
- Single
Quando este método retorna, contém o resultado da análise s
com êxito ou um valor indefinido em caso de falha.
Retornos
true
se s
foi analisado com êxito; caso contrário, false
.
Aplica-se a
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
Tenta analisar um intervalo de caracteres UTF-8 em um valor.
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
Parâmetros
- utf8Text
- ReadOnlySpan<Byte>
O intervalo de caracteres UTF-8 a serem analisados.
- style
- NumberStyles
Uma combinação bit a bit de estilos de número que podem estar presentes em utf8Text
.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas à cultura sobre utf8Text
.
- result
- Single
No retorno, contém o resultado da análise utf8Text
com êxito ou de um valor indefinido em caso de falha.
Retornos
true
se utf8Text
foi analisado com êxito; caso contrário, false
.
Aplica-se a
TryParse(ReadOnlySpan<Byte>, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
Tenta converter um intervalo de caracteres UTF-8 que contém a representação de cadeia de caracteres de um número em seu número de ponto flutuante de precisão simples equivalente.
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
Parâmetros
- utf8Text
- ReadOnlySpan<Byte>
Um intervalo de caracteres UTF-8 somente leitura que contém o número a ser convertido.
- result
- Single
Quando este método retorna, contém um número de ponto flutuante de precisão simples equivalente ao valor numérico ou símbolo contido em utf8Text
se a conversão foi bem-sucedida ou zero se a conversão falhou. A conversão falhará se o utf8Text
estiver Empty ou não estiver em um formato válido. Este parâmetro é passado não inicializado; qualquer valor fornecido originalmente no resultado será substituído.
Retornos
true
caso utf8Text
tenha sido convertido com êxito; do contrário, false
.
Aplica-se a
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
- Origem:
- Single.cs
Converte a representação de intervalo de um número em um formato específico da cultura e um estilo especificados em seu número de ponto flutuante de precisão simples equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.
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
Parâmetros
- s
- ReadOnlySpan<Char>
Um intervalo de caracteres somente leitura que contém o número a ser convertido. O intervalo é interpretado usando o estilo especificado por style
.
- style
- NumberStyles
Um combinação bit a bit de valores de enumeração que indica o formato permitido de s
. Um valor típico para ser especificado é uma combinação de Float com AllowThousands.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas da cultura sobre s
.
- result
- Single
Quando esse método é retornado, ele contém o número de ponto flutuante de precisão simples equivalente ao valor numérico ou símbolo contido em s
, caso a conversão seja bem-sucedida ou zero, caso a conversão falhe. A conversão falhará se o s
parâmetro for null
ou Empty, não estiver em um formato compatível com style
, representará um número menor que Single.MinValue ou maior que Single.MaxValue ou se style
não for uma combinação válida de NumberStyles constantes enumeradas. Este parâmetro é passado não inicializado; qualquer valor fornecido originalmente em result
será substituído.
Retornos
true
caso s
tenha sido convertido com êxito; do contrário, false
.
Comentários
No .NET Core 3.0 e posterior, os valores que são muito grandes para representar são arredondados para PositiveInfinity ou NegativeInfinity conforme exigido pela especificação do IEEE 754. Em versões anteriores, incluindo .NET Framework, a análise de um valor muito grande para representar resultou em falha.
Aplica-se a
TryParse(String, NumberStyles, IFormatProvider, Single)
- Origem:
- Single.cs
- Origem:
- Single.cs
- Origem:
- Single.cs
Converte a representação de cadeia de caracteres de um número em um estilo e formato específico da cultura especificados em seu equivalente de número de ponto flutuante de precisão simples. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.
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
Parâmetros
- s
- String
Uma cadeia de caracteres que representa um número a ser convertido.
- style
- NumberStyles
Um combinação bit a bit de valores de enumeração que indica o formato permitido de s
. Um valor típico para ser especificado é uma combinação de Float com AllowThousands.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas da cultura sobre s
.
- result
- Single
Quando esse método é retornado, ele contém o número de ponto flutuante de precisão simples equivalente ao valor numérico ou símbolo contido em s
, caso a conversão seja bem-sucedida ou zero, caso a conversão falhe. A conversão falhará se o parâmetro s
for null
, Empty, se não estiver em um formato em conformidade com style
ou se style
não for uma combinação válida das constantes de enumeração de NumberStyles. Ele também falhará em .NET Framework ou .NET Core 2.2 e versões anteriores se s
representar um número menor que Single.MinValue ou maior que Single.MaxValue. Este parâmetro é passado não inicializado; qualquer valor fornecido originalmente em result
será substituído.
Retornos
true
caso s
tenha sido convertido com êxito; do contrário, false
.
Exceções
Exemplos
O exemplo a seguir demonstra o uso do Single.TryParse(String, NumberStyles, IFormatProvider, Single) método para analisar a representação de cadeia de caracteres de números que têm um estilo específico e são formatados usando as convenções de uma cultura específica.
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'.
Comentários
No .NET Core 3.0 e posterior, os valores que são muito grandes para representar são arredondados para PositiveInfinity ou NegativeInfinity conforme exigido pela especificação do IEEE 754. Em versões anteriores, incluindo .NET Framework, a análise de um valor muito grande para representar resultou em falha.
Essa sobrecarga difere do Parse(String, NumberStyles, IFormatProvider) método retornando um valor booliano que indica se a operação de análise foi bem-sucedida em vez de retornar o valor numérico analisado. Ele elimina a necessidade de usar a identificação de exceções para testar um FormatException caso esse s
seja inválido e não possa ser analisado com êxito.
O parâmetro style
define o formato permitido do parâmetro s
para que a operação de análise seja bem-sucedida. Ele deve ser uma combinação de sinalizadores de bits da enumeração NumberStyles. Os seguintes membros NumberStyles não são suportados:
O s
parâmetro pode conter PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol para a cultura indicada por provider
. Além disso, dependendo do valor de style
, o s
parâmetro pode incluir os seguintes elementos:
[ws] [$] [sign] [integral-digits,]integral-digits[.fractional-digits][e[sign]exponential-digits][ws]
Os elementos entre colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.
Elemento | Descrição |
---|---|
ws | Espaço em branco opcional. O espaço em branco pode aparecer no início de s se style incluir o NumberStyles.AllowLeadingWhite sinalizador . Ele pode aparecer no final de s se style incluir o NumberStyles.AllowTrailingWhite sinalizador . |
$ | Um símbolo de moeda específico de cultura. Sua posição na cadeia de caracteres é definida pelas NumberFormatInfo.CurrencyNegativePattern propriedades ou NumberFormatInfo.CurrencyPositivePattern do NumberFormatInfo objeto retornado pelo IFormatProvider.GetFormat método do provider parâmetro . O símbolo de moeda pode ser exibido em s caso style inclua o sinalizador NumberStyles.AllowCurrencySymbol. |
sign | Um sinal opcional. O sinal pode ser exibido no início de s caso style inclua o sinalizador NumberStyles.AllowLeadingSign e ele pode ser exibido no final de s caso style inclua o sinalizador NumberStyles.AllowTrailingSign. Os parênteses podem ser usados em s para indicar um valor negativo caso style inclua o sinalizador NumberStyles.AllowParentheses. |
dígitos integrais | Uma série de dígitos que varia de 0 a 9 que especificam a parte integral do número. Os dígitos integrais podem estar ausentes caso sejam dígitos fracionários. |
, | Um símbolo de separador de milhares específico da cultura. O símbolo do separador do grupo da cultura atual pode ser exibido em s caso style inclua o sinalizador NumberStyles.AllowThousands. |
. | Um símbolo de vírgula decimal específico de cultura. O símbolo da vírgula decimal da cultura atual pode ser exibido em s caso style inclua o sinalizador NumberStyles.AllowDecimalPoint. |
dígitos fracionários | Uma série de dígitos que varia de 0 a 9 que especificam a parte fracionária do número. Os dígitos fracionários podem ser exibidos em s caso style inclua o sinalizador NumberStyles.AllowDecimalPoint. |
e | O caractere e ou E, que indica que s pode representar um número usando notação exponencial. O s parâmetro poderá representar um número na notação exponencial se o estilo incluir o NumberStyles.AllowExponent sinalizador. |
dígitos exponenciais | Uma série de dígitos que varia de 0 a 9 que especificam um expoente. |
Observação
Todos os caracteres NUL de terminação (U+0000) em s
são ignorados pela operação de análise, independentemente do valor do style
argumento.
Uma cadeia de caracteres apenas com dígitos (que corresponde ao estilo NumberStyles.None ) sempre é analisada com Single êxito. Os membros restantes System.Globalization.NumberStyles controlam elementos que podem estar, mas não precisam estar presentes na cadeia de caracteres de entrada. A tabela a seguir indica como os sinalizadores individuais NumberStyles afetam os elementos que podem estar presentes em s
.
Valor NumberStyles | Elementos permitidos em s além de dígitos |
---|---|
None | Somente o elemento de dígitos integrais . |
AllowDecimalPoint | Os elementos . e de dígitos fracionários . |
AllowExponent | O parâmetro s também pode usar notação exponencial. Esse sinalizador por si só dá suporte a valores na forma de dígitos integraisEexponencial-dígitos; sinalizadores adicionais são necessários para analisar cadeias de caracteres com êxito na notação exponencial com elementos como sinais positivos ou negativos e símbolos de ponto decimal. |
AllowLeadingWhite | O elemento ws no início de s . |
AllowTrailingWhite | O elemento ws no final de s . |
AllowLeadingSign | O elemento sinal no início de s . |
AllowTrailingSign | O elemento sinal no final de s . |
AllowParentheses | O elemento sinal na forma de parênteses que incluem o valor numérico. |
AllowThousands | O elemento , . |
AllowCurrencySymbol | O $ elemento . |
Currency | Todos. O parâmetro s não pode representar um número hexadecimal ou um número em notação exponencial. |
Float | O elemento ws no início ou no final de s , assina no início de s e o símbolo . O parâmetro s também pode usar notação exponencial. |
Number | Os ws elementos separador , sign , milhares (,) e ponto decimal (.). |
Any | Todos os estilos, exceto caso s não possa representar um número hexadecimal. |
O provider
parâmetro é uma implementação IFormatProvider cujo GetFormat método retorna um NumberFormatInfo objeto que fornece informações de formatação específicas da cultura. Quando o TryParse(String, NumberStyles, IFormatProvider, Single) método é invocado, ele chama o provider
método do GetFormat parâmetro e passa a ele um Type objeto que representa o NumberFormatInfo tipo. Em GetFormat seguida, o método retorna o NumberFormatInfo objeto que fornece informações sobre o formato do s
parâmetro. Existem três maneiras de usar o parâmetro provider
para fornecer informações de formatação personalizadas para a operação de análise:
É possível passar um objeto CultureInfo que representa a cultura que fornece informações de formatação. O método GetFormat retorna o objeto NumberFormatInfo que fornece informações de formatação numérica para essa cultura.
É possível passar o objeto real NumberFormatInfo que fornece informações de formatação numérica. (Sua implementação de GetFormat retorna apenas ele próprio.)
É possível passar um objeto personalizado que implementa IFormatProvider. O método GetFormat cria uma instância e retorna o objeto NumberFormatInfo que fornece informações de formatação.
Se provider
for null
, a formatação de s
será interpretada com base no NumberFormatInfo objeto da cultura atual.
Se s
estiver fora do intervalo do tipo de Single dados, o método lançará um OverflowException no .NET Framework e no .NET Core 2.2 e versões anteriores. No .NET Core 3.0 e versões posteriores, ele retornará Single.NegativeInfinity se s
for menor que Single.MinValue e Single.PositiveInfinity se s
for maior que Single.MaxValue.
Caso um separador esteja no parâmetro s
durante uma operação de análise e a moeda aplicável ou os separadores de casa decimal e grupo sejam iguais, a operação de análise pressupõe que o separador seja um separador decimal, e não um separador de grupo. Para obter mais informações sobre separadores, consulte CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator e NumberGroupSeparator.
Confira também
Aplica-se a
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de