Decimal.TryParse Método

Definição

Converte a representação de cadeia de caracteres de um número em seu Decimal equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.

Sobrecargas

TryParse(ReadOnlySpan<Byte>, Decimal)

Tenta converter um intervalo de caracteres UTF-8 que contém a representação de cadeia de caracteres de um número em seu equivalente decimal assinado.

TryParse(ReadOnlySpan<Char>, Decimal)

Converte a representação de intervalo de um número em seu Decimal equivalente usando o formato específico da cultura. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.

TryParse(String, Decimal)

Converte a representação de cadeia de caracteres de um número em seu Decimal equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)

Tenta analisar um intervalo de caracteres UTF-8 em um valor.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)

Tenta analisar um intervalo de caracteres em um valor.

TryParse(String, IFormatProvider, Decimal)

Tenta analisar uma cadeia de caracteres em um valor.

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

Tenta analisar um intervalo de caracteres UTF-8 em um valor.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal)

Converte a representação de intervalo de um número em seu Decimal equivalente usando o estilo especificado e o formato específico da cultura. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.

TryParse(String, NumberStyles, IFormatProvider, Decimal)

Converte a representação de cadeia de caracteres de um número em seu Decimal equivalente usando o formato específico de estilo e cultura especificados. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.

TryParse(ReadOnlySpan<Byte>, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.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 equivalente decimal assinado.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse (ReadOnlySpan<byte> utf8Text, out decimal result);
static member TryParse : ReadOnlySpan<byte> * decimal -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Decimal) As Boolean

Parâmetros

utf8Text
ReadOnlySpan<Byte>

Um intervalo que contém os caracteres UTF-8 que representam o número a ser convertido.

result
Decimal

Quando esse método é retornado, contém o valor decimal assinado equivalente ao número contido em utf8Text se a conversão foi bem-sucedida ou zero se a conversão falhou. Esse parâmetro é passado sem inicialização; qualquer valor originalmente fornecido no resultado será substituído.

Retornos

true se utf8Text foi convertido com êxito; caso contrário, false.

Aplica-se a

TryParse(ReadOnlySpan<Char>, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Converte a representação de intervalo de um número em seu Decimal equivalente usando o formato específico da cultura. Um valor retornado indica se a conversão foi bem-sucedida 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 intervalo que contém os caracteres que representam o número a ser convertido.

result
Decimal

Quando esse método é retornado, contém o número Decimal equivalente ao valor numérico contido em s, se a conversão tiver sido bem-sucedida ou zero se a conversão falhar. A conversão falhará se o parâmetro s for null ou Empty ou representar um número menor que Decimal.MinValue ou maior que Decimal.MaxValue. Esse parâmetro é passado uininitializado; qualquer valor originalmente fornecido em result é substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Aplica-se a

TryParse(String, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Converte a representação de cadeia de caracteres de um número em seu Decimal equivalente. Um valor retornado indica se a conversão foi bem-sucedida ou falhou.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse (string s, out 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 de cadeia de caracteres do número a ser convertido.

result
Decimal

Quando esse método é retornado, contém o número Decimal equivalente ao valor numérico contido em s, se a conversão tiver sido bem-sucedida ou zero se a conversão falhar. A conversão falhará se o parâmetro s for null ou Empty, não for um número em um formato válido ou representar um número menor que Decimal.MinValue ou maior que Decimal.MaxValue. Esse parâmetro é passado uininitializado; qualquer valor originalmente fornecido em result é substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Exemplos

O exemplo a seguir usa o método Decimal.TryParse(String, Decimal) para converter as representações de cadeia de caracteres de valores numéricos em valores Decimal. Ele 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

Comentários

Essa sobrecarga difere do método Decimal.Parse(String) 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. Elimina a necessidade de usar o tratamento de exceções para testar um FormatException caso s seja inválido e não possa ser analisado com êxito.

O parâmetro s contém um número do formulário:

[ws] [sign] [dígitos,]dígitos[.fractional-digits][ws]

Elementos em colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Descrição
ws Espaço em branco opcional.
assinar Um sinal opcional.
dígitos Uma sequência de dígitos variando de 0 a 9.
, Um símbolo separador de milhares específico à cultura.
. Um símbolo de ponto decimal específico da cultura.
de dígitos fracionários Uma sequência de dígitos variando de 0 a 9.

O parâmetro s é interpretado usando o estilo NumberStyles.Number. Isso significa que o espaço em branco e milhares de separadores são permitidos, mas os símbolos de moeda não são. Para definir explicitamente os elementos (como símbolos de moeda, milhares de separadores e espaço em branco) que podem estar presentes em s, use a sobrecarga do método Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal).

O parâmetro s é analisado usando as informações de formatação em um objeto NumberFormatInfo inicializado para a cultura atual do sistema. Para obter mais informações, consulte CurrentInfo. Para analisar uma cadeia de caracteres usando as informações de formatação de alguma outra cultura especificada, use a sobrecarga do método Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal).

Se necessário, o valor de s será arredondado usando o arredondamento para o mais próximo.

Um objeto Decimal tem 29 dígitos de precisão. Se s representar um número com mais de 29 dígitos, mas tiver uma parte fracionária e estiver dentro do intervalo de MaxValue e MinValue, o número será arredondado, não truncado, para 29 dígitos usando arredondamento para mais próximo.

Se durante uma operação de análise um separador for encontrado no parâmetro s, e a moeda ou o número decimal aplicável e separadores de grupo forem os mesmos, a operação de análise pressupõe que o separador seja um separador decimal em vez de um separador de grupo. Para obter mais informações sobre separadores, consulte CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatore NumberGroupSeparator.

Confira também

Aplica-se a

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.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] System::Decimal % result) = IUtf8SpanParsable<System::Decimal>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out decimal result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * decimal -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Decimal) 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 da cultura sobre utf8Text.

result
Decimal

No retorno, contém o resultado da análise bem-sucedida de utf8Text ou de um valor indefinido sobre a falha.

Retornos

true se utf8Text foi analisado com êxito; caso contrário, false.

Aplica-se a

TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Tenta analisar um intervalo de caracteres em um valor.

public:
 static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = ISpanParsable<System::Decimal>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out decimal result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Decimal) 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 da cultura sobre s.

result
Decimal

Quando esse método é retornado, contém o resultado da análise bem-sucedida de sou um valor indefinido sobre a falha.

Retornos

true se s foi analisado com êxito; caso contrário, false.

Aplica-se a

TryParse(String, IFormatProvider, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Tenta analisar uma cadeia de caracteres em um valor.

public:
 static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = IParsable<System::Decimal>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out decimal result);
static member TryParse : string * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Decimal) 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 da cultura sobre s.

result
Decimal

Quando esse método é retornado, contém o resultado da análise bem-sucedida de s ou de um valor indefinido sobre a falha.

Retornos

true se s foi analisado com êxito; caso contrário, false.

Aplica-se a

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

Origem:
Decimal.cs
Origem:
Decimal.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] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) 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 numéricos que podem estar presentes em utf8Text.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre utf8Text.

result
Decimal

No retorno, contém o resultado da análise bem-sucedida de utf8Text ou de um valor indefinido sobre a falha.

Retornos

true se utf8Text foi analisado com êxito; caso contrário, false.

Aplica-se a

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Converte a representação de intervalo de um número em seu Decimal equivalente usando o estilo especificado e o formato específico da cultura. 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] System::Decimal % result);
public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out 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 intervalo que contém os caracteres que representam o número a ser convertido.

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 ser especificado é Number.

provider
IFormatProvider

Um objeto que fornece informações de análise específicas da cultura sobre s.

result
Decimal

Quando esse método é retornado, contém o número Decimal equivalente ao valor numérico contido em s, se a conversão tiver sido bem-sucedida ou zero se a conversão falhar. A conversão falhará se o parâmetro s for null ou Empty, não for um número em um formato compatível com styleou representar um número menor que Decimal.MinValue ou maior que Decimal.MaxValue. Esse parâmetro é passado uininitializado; qualquer valor originalmente fornecido em result é substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Aplica-se a

TryParse(String, NumberStyles, IFormatProvider, Decimal)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Converte a representação de cadeia de caracteres de um número em seu Decimal equivalente usando o formato específico de estilo e cultura especificados. 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] System::Decimal % result);
public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out 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 de cadeia de caracteres do número a ser convertido.

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 ser especificado é Number.

provider
IFormatProvider

Um objeto que fornece informações de análise específicas da cultura sobre s.

result
Decimal

Quando esse método é retornado, contém o número Decimal equivalente ao valor numérico contido em s, se a conversão tiver sido bem-sucedida ou zero se a conversão falhar. A conversão falhará se o parâmetro s for null ou Empty, não for um número em um formato compatível com styleou representar um número menor que Decimal.MinValue ou maior que Decimal.MaxValue. Esse parâmetro é passado uininitializado; qualquer valor originalmente fornecido em result é substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Exceções

style não é um valor NumberStyles.

-ou-

style é o valor AllowHexSpecifier.

Exemplos

O exemplo a seguir demonstra o uso do método TryParse(String, NumberStyles, IFormatProvider, Decimal) para analisar a representação de cadeia de caracteres de um número que tem um estilo específico e é formatado usando as convenções de uma cultura específica.

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

Comentários

Essa sobrecarga difere do método Decimal.Parse(String, NumberStyles, IFormatProvider) 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. Elimina a necessidade de usar o tratamento de exceções para testar um FormatException caso 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. Deve ser uma combinação de sinalizadores de bits da enumeração NumberStyles. Não há suporte para os seguintes membros NumberStyles:

Dependendo do valor do estilo, o parâmetro s pode incluir os seguintes elementos:

[ws] [$] [sign] [dígitos,]dígitos[.fractional-digits][e[sign]digits][ws]

Elementos em 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 poderá aparecer no início de s se style incluir o sinalizador NumberStyles.AllowLeadingWhite. Ele poderá aparecer no final do s se style incluir o sinalizador de NumberStyles.AllowTrailingWhite.
$ Um símbolo de moeda específico à cultura. Sua posição na cadeia de caracteres é definida pelas propriedades NumberFormatInfo.CurrencyNegativePattern ou NumberFormatInfo.CurrencyPositivePattern do objeto NumberFormatInfo retornado pelo método IFormatProvider.GetFormat do parâmetro provider. O símbolo de moeda poderá aparecer em s se style incluir o sinalizador NumberStyles.AllowCurrencySymbol.
assinar Um sinal opcional.
dígitos Uma sequência de dígitos variando de 0 a 9.
. Um símbolo de ponto decimal específico da cultura.
de dígitos fracionários Uma sequência de dígitos variando de 0 a 9.

O parâmetro style especifica o formato permitido do parâmetro s e pode ser uma ou mais constantes enumeradas NumberStyles combinadas usando uma operação OR bit a bit. Se style for nulo, s será interpretado usando o estilo NumberStyles.Number.

O parâmetro provider é uma implementação IFormatProvider, como um objeto NumberFormatInfo ou CultureInfo. O parâmetro provider fornece informações específicas da cultura usadas na análise. Se provider for null, a cultura atual do thread será usada.

Um objeto Decimal tem 29 dígitos de precisão. Se s representar um número com mais de 29 dígitos, mas tiver uma parte fracionária e estiver dentro do intervalo de MaxValue e MinValue, o número será arredondado, não truncado, para 29 dígitos usando arredondamento para mais próximo.

Se um separador for encontrado no parâmetro s durante uma operação de análise, e a moeda ou o número decimal aplicável e separadores de grupo forem os mesmos, a operação de análise pressupõe que o separador seja um separador decimal em vez de um separador de grupo. Para obter mais informações sobre separadores, consulte CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatore NumberGroupSeparator.

Confira também

Aplica-se a