Decimal.TryParse Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Converte a representação da cadeia de um número para o seu Decimal equivalente. Um valor de retorno indica se a conversão teve sucesso ou falhou.
Sobrecargas
| Name | Description |
|---|---|
| TryParse(String, NumberStyles, IFormatProvider, Decimal) |
Converte a representação da cadeia de um número para o seu Decimal equivalente usando o estilo especificado e o formato específico da cultura. Um valor de retorno indica se a conversão teve sucesso ou falhou. |
| TryParse(String, Decimal) |
Converte a representação da cadeia de um número para o seu Decimal equivalente. Um valor de retorno indica se a conversão teve sucesso ou falhou. |
| TryParse(ReadOnlySpan<Char>, Decimal) |
Converte a representação span de um número para o seu Decimal equivalente usando o formato específico da cultura. Um valor de retorno indica se a conversão teve sucesso ou falhou. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) |
Converte a representação span de um número para o seu Decimal equivalente usando o estilo especificado e o formato específico da cultura. Um valor de retorno indica se a conversão teve sucesso ou falhou. |
TryParse(String, NumberStyles, IFormatProvider, Decimal)
Converte a representação da cadeia de um número para o seu Decimal equivalente usando o estilo especificado e o formato específico da cultura. Um valor de retorno indica se a conversão teve sucesso ou falhou.
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parâmetros
- s
- String
A representação da cadeia do número a converter.
- style
- NumberStyles
Uma combinação bit a bit de valores de enumeração que indica o formato permitido de s. Um valor típico a especificar é Number.
- provider
- IFormatProvider
Um objeto que fornece informação de análise específica da cultura sobre s.
- result
- Decimal
Quando este método retorna, contém o Decimal número que é equivalente ao valor numérico contido em s, se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty, não for um número num formato compatível com style, ou representar um número menor que Decimal.ValorMínimoValor ou maior que Decimal.ValorMáxima. Este parâmetro é transmitido uininicializado; qualquer valor originalmente fornecido result é sobrescrito.
Devoluções
true se s foi convertido com sucesso; caso contrário, false.
Exceções
Exemplos
O exemplo seguinte demonstra o uso do TryParse(String, NumberStyles, IFormatProvider, Decimal) método para analisar a representação de cadeias de um número que tem um estilo particular e é formatado usando as convenções de uma cultura particular.
string value;
NumberStyles style;
CultureInfo culture;
decimal number;
// Parse currency value using en-GB culture.
value = "£1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Converted '£1,097.63' to 1097.63.
value = "1345,978";
style = NumberStyles.AllowDecimalPoint;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Converted '1345,978' to 1345.978.
value = "1.345,978";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
culture = CultureInfo.CreateSpecificCulture("es-ES");
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Converted '1.345,978' to 1345.978.
value = "1 345,978";
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Unable to convert '1 345,978'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = NumberStyles.Number ||| NumberStyles.AllowCurrencySymbol
let culture = CultureInfo.CreateSpecificCulture "en-GB"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Converted '£1,097.63' to 1097.63.
let value = "1345,978"
let style = NumberStyles.AllowDecimalPoint
let culture = CultureInfo.CreateSpecificCulture "fr-FR"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Converted '1345,978' to 1345.978.
let value = "1.345,978"
let style = NumberStyles.AllowDecimalPoint ||| NumberStyles.AllowThousands
let culture = CultureInfo.CreateSpecificCulture "es-ES"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Converted '1.345,978' to 1345.978.
let value = "1 345,978"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Unable to convert '1 345,978'.
Dim value As String
Dim style As NumberStyles
Dim culture As CultureInfo
Dim number As Decimal
' Parse currency value using en-GB culture.
value = "£1,097.63"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
culture = CultureInfo.CreateSpecificCulture("en-GB")
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Converted '£1,097.63' to 1097.63.
value = "1345,978"
style = NumberStyles.AllowDecimalPoint
culture = CultureInfo.CreateSpecificCulture("fr-FR")
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Converted '1345,978' to 1345.978.
value = "1.345,978"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
culture = CultureInfo.CreateSpecificCulture("es-ES")
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Converted '1.345,978' to 1345.978.
value = "1 345,978"
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Unable to convert '1 345,978'.
Observações
Esta sobrecarga difere do Decimal.Parse(String, NumberStyles, IFormatProvider) método por devolver um valor booleano que indica se a operação de análise analisada teve sucesso, em vez de devolver o valor numérico analisado. Elimina a necessidade de usar o tratamento de exceções para testar a FormatException caso este s seja inválido e não possa ser analisado com sucesso.
O style parâmetro define o formato permitido do s parâmetro para que a operação de análise sintática tenha sucesso. Deve ser uma combinação de indicadores de bits da NumberStyles enumeração. Os seguintes NumberStyles membros não são apoiados:
Dependendo do valor do estilo, o s parâmetro pode incluir os seguintes elementos:
[ws][$][sinal][dígitos,]dígitos[.dígitos fracionários][dígitos e[signos][ws]
Os elementos entre parênteses retos ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.
| Elemento | Description |
|---|---|
| ws | Espaço em branco opcional. O espaço em branco pode aparecer no início de s if style inclui a NumberStyles.AllowLeadingWhite bandeira. Pode aparecer no final de s se style incluir a NumberStyles.AllowTrailingWhite bandeira. |
| $ | Um símbolo monetário específico de cada cultura. A sua posição na cadeia é definida pelas NumberFormatInfo.CurrencyNegativePattern propriedades ou NumberFormatInfo.CurrencyPositivePattern do NumberFormatInfo objeto devolvidas pelo IFormatProvider.GetFormat método do provider parâmetro. O símbolo da moeda pode aparecer se sstyle incluir a NumberStyles.AllowCurrencySymbol bandeira. |
| assinar | Um sinal opcional. |
| dígitos | Uma sequência de dígitos que varia de 0 a 9. |
| . | Um símbolo de ponto decimal específico para cada cultura. |
| Dígitos fracionários | Uma sequência de dígitos que varia de 0 a 9. |
O style parâmetro especifica o formato permitido do s parâmetro e pode ser uma ou mais NumberStyles constantes enumeradas combinadas usando uma operação OR bit a bit. Se style for nulo, s é interpretado usando o NumberStyles.Number estilo.
O provider parâmetro é uma IFormatProvider implementação como um NumberFormatInfo objeto ou CultureInfo . O provider parâmetro fornece informação específica da cultura utilizada na análise sintática. Se provider for null, usa-se a cultura atual do fio.
Um Decimal objeto tem 29 dígitos de precisão. Se s representa um número que tem mais de 29 dígitos, mas tem uma parte fracionária e está dentro do intervalo de MaxValue e MinValue, o número é arredondado, não truncado, para 29 dígitos usando arredondamento para o mais próximo.
Se um separador for encontrado no s parâmetro durante uma operação de análise sintática, e os separadores decimais e de grupo de moeda ou número aplicáveis forem os mesmos, a operação de análise analisar assume que o separador é um separador decimal e não um separador de grupo. Para mais informações sobre separadores, veja CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, e NumberGroupSeparator.
Ver também
Aplica-se a
TryParse(String, Decimal)
Converte a representação da cadeia de um número para o seu Decimal equivalente. Um valor de retorno indica se a conversão teve sucesso ou falhou.
public:
static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(string s, out decimal result);
static member TryParse : string * decimal -> bool
Public Shared Function TryParse (s As String, ByRef result As Decimal) As Boolean
Parâmetros
- s
- String
A representação da cadeia do número a converter.
- result
- Decimal
Quando este método retorna, contém o Decimal número que é equivalente ao valor numérico contido em s, se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty, não for um número num formato válido, ou representar um número menor que Decimal.MinValue ou maior que Decimal.MaxValue. Este parâmetro é transmitido uininicializado; qualquer valor originalmente fornecido result é sobrescrito.
Devoluções
true se s foi convertido com sucesso; caso contrário, false.
Exemplos
O exemplo seguinte utiliza o Decimal.TryParse(String, Decimal) método para converter as representações de cadeias de valores numéricos em Decimal valores. Pressupõe que en-US é a cultura atual.
string value;
decimal number;
// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Decimal.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 (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse value in exponential notation.
value = "-1.643e6";
if (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse a negative integer value.
value = "-1689346178821";
if (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// The example displays the following output to the console:
// 1643.57
// Unable to parse '$1,643.57'.
// Unable to parse '-1.643e6'.
// -1689346178821
// Parse a floating-point value with a thousands separator.
let value = "1,643.57"
match Decimal.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 Decimal.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse value in exponential notation.
let value = "-1.643e6"
match Decimal.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse a negative integer value.
let value = "-1689346178821"
match Decimal.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// The example displays the following output to the console:
// 1643.57
// Unable to parse '$1,643.57'.
// Unable to parse '-1.643e6'.
// -1689346178821
Dim value As String
Dim number As Decimal
' Parse a floating-point value with a thousands separator.
value = "1,643.57"
If Decimal.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 Decimal.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 Decimal.TryParse(value, number)
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' Parse a negative integer value.
value = "-1689346178821"
If Decimal.TryParse(value, number)
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' The example displays the following output to the console:
' 1643.57
' Unable to parse '$1,643.57'.
' Unable to parse '-1.643e6'.
' -1689346178821
Observações
Esta sobrecarga difere do Decimal.Parse(String) método por devolver um valor booleano que indica se a operação de análise analisada teve sucesso, em vez de devolver o valor numérico analisado. Elimina a necessidade de usar o tratamento de exceções para testar a FormatException caso este s seja inválido e não possa ser analisado com sucesso.
O parâmetro s contém um número da forma:
[ws][sinal][dígitos,]dígitos[.dígitos fracionários][ws]
Os elementos entre parênteses retos ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.
| Elemento | Description |
|---|---|
| ws | Espaço em branco opcional. |
| assinar | Um sinal opcional. |
| dígitos | Uma sequência de dígitos que varia de 0 a 9. |
| , | Um símbolo separador de milhares específico de cultura. |
| . | Um símbolo de ponto decimal específico para cada cultura. |
| Dígitos fracionários | Uma sequência de dígitos que varia de 0 a 9. |
O parâmetro s é interpretado usando o NumberStyles.Number estilo. Isto 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, separadores de milhares e espaços em branco) que podem estar presentes em s, use o Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) método overload.
O parâmetro s é analisado usando a informação de formatação num NumberFormatInfo objeto inicializado para a cultura do sistema atual. Para obter mais informações, veja CurrentInfo. Para analisar uma string usando a informação de formatação de outra cultura especificada, use o Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) método overload.
Se necessário, o valor de s é arredondado usando arredondamento para mais próximo.
Um Decimal objeto tem 29 dígitos de precisão. Se s representa um número que tem mais de 29 dígitos, mas tem uma parte fracionária e está dentro do intervalo de MaxValue e MinValue, o número é arredondado, não truncado, para 29 dígitos usando arredondamento para o mais próximo.
Se durante uma operação de análise sintática for encontrado um separador no s parâmetro, e os separadores decimais e de grupo de moeda ou número aplicáveis forem os mesmos, a operação de análise sintática assume que o separador é um separador decimal e não um separador de grupo. Para mais informações sobre separadores, veja CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, e NumberGroupSeparator.
Ver também
Aplica-se a
TryParse(ReadOnlySpan<Char>, Decimal)
Converte a representação span de um número para o seu Decimal equivalente usando o formato específico da cultura. Um valor de retorno indica se a conversão teve sucesso ou falhou.
public:
static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(ReadOnlySpan<char> s, out decimal result);
static member TryParse : ReadOnlySpan<char> * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Decimal) As Boolean
Parâmetros
- s
- ReadOnlySpan<Char>
Um espaço que contém os caracteres que representam o número a converter.
- result
- Decimal
Quando este método retorna, contém o Decimal número que é equivalente ao valor numérico contido em s, se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty ou representar um número menor que Decimal.MinValue ou maior que Decimal.MaxValue. Este parâmetro é transmitido uininicializado; qualquer valor originalmente fornecido result é sobrescrito.
Devoluções
true se s foi convertido com sucesso; caso contrário, false.
Aplica-se a
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal)
Converte a representação span de um número para o seu Decimal equivalente usando o estilo especificado e o formato específico da cultura. Um valor de retorno indica se a conversão teve sucesso ou falhou.
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parâmetros
- s
- ReadOnlySpan<Char>
Um espaço que contém os caracteres que representam o número a converter.
- style
- NumberStyles
Uma combinação bit a bit de valores de enumeração que indica o formato permitido de s. Um valor típico a especificar é Number.
- provider
- IFormatProvider
Um objeto que fornece informação de análise específica da cultura sobre s.
- result
- Decimal
Quando este método retorna, contém o Decimal número que é equivalente ao valor numérico contido em s, se a conversão foi bem-sucedida, ou zero se a conversão falhou. A conversão falha se o s parâmetro for null ou Empty, não for um número num formato compatível com style, ou representar um número menor que Decimal.ValorMínimoValor ou maior que Decimal.ValorMáxima. Este parâmetro é transmitido uininicializado; qualquer valor originalmente fornecido result é sobrescrito.
Devoluções
true se s foi convertido com sucesso; caso contrário, false.