Leer en inglés

Compartir a través de


Decimal.TryParse Método

Definición

Convierte la representación de cadena de un número en su Decimal equivalente. Un valor devuelto indica si la conversión se realizó correctamente o no.

Sobrecargas

TryParse(ReadOnlySpan<Byte>, Decimal)

Intenta convertir un intervalo de caracteres UTF-8 que contiene la representación de cadena de un número en su equivalente decimal firmado.

TryParse(ReadOnlySpan<Char>, Decimal)

Convierte la representación de intervalo de un número en su Decimal equivalente mediante el formato específico de la referencia cultural. Un valor devuelto indica si la conversión se realizó correctamente o no.

TryParse(String, Decimal)

Convierte la representación de cadena de un número en su Decimal equivalente. Un valor devuelto indica si la conversión se realizó correctamente o no.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)

Intenta analizar un intervalo de caracteres UTF-8 en un valor.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)

Intenta analizar un intervalo de caracteres en un valor.

TryParse(String, IFormatProvider, Decimal)

Intenta analizar una cadena en un valor.

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

Intenta analizar un intervalo de caracteres UTF-8 en un valor.

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

Convierte la representación de intervalo de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados. Un valor devuelto indica si la conversión se realizó correctamente o no.

TryParse(String, NumberStyles, IFormatProvider, Decimal)

Convierte la representación de cadena de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados. Un valor devuelto indica si la conversión se realizó correctamente o no.

TryParse(ReadOnlySpan<Byte>, Decimal)

Source:
Decimal.cs
Source:
Decimal.cs

Intenta convertir un intervalo de caracteres UTF-8 que contiene la representación de cadena de un número en su equivalente decimal firmado.

C#
public static bool TryParse(ReadOnlySpan<byte> utf8Text, out decimal result);

Parámetros

utf8Text
ReadOnlySpan<Byte>

Intervalo que contiene los caracteres UTF-8 que representan el número que se va a convertir.

result
Decimal

Cuando este método devuelve, contiene el valor decimal firmado equivalente al número contenido en utf8Text si la conversión se realizó correctamente o cero si se produjo un error en la conversión. Este parámetro se pasa sin inicializar; Cualquier valor proporcionado originalmente en el resultado se sobrescribirá.

Devoluciones

true si utf8Text se convirtió correctamente; de lo contrario, false.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET 8, 9, 10

TryParse(ReadOnlySpan<Char>, Decimal)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de intervalo de un número en su Decimal equivalente mediante el formato específico de la referencia cultural. Un valor devuelto indica si la conversión se realizó correctamente o no.

C#
public static bool TryParse(ReadOnlySpan<char> s, out decimal result);

Parámetros

s
ReadOnlySpan<Char>

Intervalo que contiene los caracteres que representan el número que se va a convertir.

result
Decimal

Cuando este método devuelve , contiene el número de Decimal equivalente al valor numérico contenido en s, si la conversión se realizó correctamente o cero si se produjo un error en la conversión. Se produce un error en la conversión si el parámetro s es null o Empty o representa un número menor que Decimal.MinValue o mayor que Decimal.MaxValue. Este parámetro se pasa uininitialized; cualquier valor proporcionado originalmente en result se sobrescribe.

Devoluciones

true si s se convirtió correctamente; de lo contrario, false.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.1

TryParse(String, Decimal)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de cadena de un número en su Decimal equivalente. Un valor devuelto indica si la conversión se realizó correctamente o no.

C#
public static bool TryParse(string s, out decimal result);
C#
public static bool TryParse(string? s, out decimal result);

Parámetros

s
String

Representación de cadena del número que se va a convertir.

result
Decimal

Cuando este método devuelve , contiene el número de Decimal equivalente al valor numérico contenido en s, si la conversión se realizó correctamente o cero si se produjo un error en la conversión. Se produce un error en la conversión si el parámetro s es null o Empty, no es un número en un formato válido o representa un número menor que Decimal.MinValue o mayor que Decimal.MaxValue. Este parámetro se pasa uininitialized; cualquier valor proporcionado originalmente en result se sobrescribe.

Devoluciones

true si s se convirtió correctamente; de lo contrario, false.

Ejemplos

En el ejemplo siguiente se usa el método Decimal.TryParse(String, Decimal) para convertir las representaciones de cadena de valores numéricos en Decimal valores. Se supone que en-US es la referencia cultural actual.

C#
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

Comentarios

Esta sobrecarga difiere del método Decimal.Parse(String) devolviendo un valor booleano que indica si la operación de análisis se realizó correctamente en lugar de devolver el valor numérico analizado. Elimina la necesidad de usar el control de excepciones para probar un FormatException en caso de que s no sea válido y no se pueda analizar correctamente.

El parámetro s contiene un número del formulario:

[ws] [sign] [digits,]digits[.fractional-digits][ws]

Los elementos entre corchetes ([ y ]) son opcionales. En la tabla siguiente se describe cada elemento.

Elemento Descripción
ws Espacio en blanco opcional.
de signo Un signo opcional.
de dígitos de Secuencia de dígitos que van de 0 a 9.
, Símbolo separador de miles específico de la referencia cultural.
. Símbolo de separador decimal específico de la referencia cultural.
fracciones de dígitos Secuencia de dígitos que van de 0 a 9.

El s de parámetro se interpreta con el estilo NumberStyles.Number. Esto significa que se permiten espacios en blanco y separadores de miles, pero no se permiten símbolos de moneda. Para definir explícitamente los elementos (como símbolos de moneda, separadores de miles y espacios en blanco) que pueden estar presentes en s, use la sobrecarga del método Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal).

El parámetro s se analiza mediante la información de formato de un objeto NumberFormatInfo inicializado para la referencia cultural del sistema actual. Para obtener más información, consulte CurrentInfo. Para analizar una cadena mediante la información de formato de alguna otra referencia cultural especificada, use la sobrecarga del método Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal).

Si es necesario, el valor de s se redondea mediante redondeo al más cercano.

Un objeto Decimal tiene 29 dígitos de precisión. Si s representa un número que tiene más de 29 dígitos, pero tiene una parte fraccionaria y está dentro del intervalo de MaxValue y MinValue, el número se redondea, no trunca, a 29 dígitos con redondeo a más cercano.

Si durante una operación de análisis se encuentra un separador en el parámetro s y los separadores decimales y de grupo aplicables son iguales, la operación de análisis supone que el separador es un separador decimal en lugar de un separador de grupo. Para obtener más información sobre los separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatory NumberGroupSeparator.

Consulte también

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)

Source:
Decimal.cs
Source:
Decimal.cs

Intenta analizar un intervalo de caracteres UTF-8 en un valor.

C#
public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out decimal result);

Parámetros

utf8Text
ReadOnlySpan<Byte>

Intervalo de caracteres UTF-8 que se van a analizar.

provider
IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural sobre utf8Text.

result
Decimal

Al devolver, contiene el resultado de analizar correctamente utf8Text o un valor indefinido en caso de error.

Devoluciones

true si utf8Text se ha analizado correctamente; de lo contrario, false.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET 8, 9, 10

TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Intenta analizar un intervalo de caracteres en un valor.

C#
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out decimal result);

Parámetros

s
ReadOnlySpan<Char>

Intervalo de caracteres que se va a analizar.

provider
IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural sobre s.

result
Decimal

Cuando este método devuelve , contiene el resultado de analizar correctamente so un valor indefinido en caso de error.

Devoluciones

true si s se ha analizado correctamente; de lo contrario, false.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET 7, 8, 9, 10

TryParse(String, IFormatProvider, Decimal)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Intenta analizar una cadena en un valor.

C#
public static bool TryParse(string? s, IFormatProvider? provider, out decimal result);

Parámetros

s
String

Cadena que se va a analizar.

provider
IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural sobre s.

result
Decimal

Cuando este método devuelve, contiene el resultado de analizar correctamente s o un valor indefinido en caso de error.

Devoluciones

true si s se ha analizado correctamente; de lo contrario, false.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET 7, 8, 9, 10

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

Source:
Decimal.cs
Source:
Decimal.cs

Intenta analizar un intervalo de caracteres UTF-8 en un valor.

C#
public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);

Parámetros

utf8Text
ReadOnlySpan<Byte>

Intervalo de caracteres UTF-8 que se van a analizar.

style
NumberStyles

Combinación bit a bit de estilos de número que pueden estar presentes en utf8Text.

provider
IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural sobre utf8Text.

result
Decimal

Al devolver, contiene el resultado de analizar correctamente utf8Text o un valor indefinido en caso de error.

Devoluciones

true si utf8Text se ha analizado correctamente; de lo contrario, false.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET 8, 9, 10

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

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de intervalo de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados. Un valor devuelto indica si la conversión se realizó correctamente o no.

C#
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);
C#
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);

Parámetros

s
ReadOnlySpan<Char>

Intervalo que contiene los caracteres que representan el número que se va a convertir.

style
NumberStyles

Combinación bit a bit de valores de enumeración que indica el formato permitido de s. Un valor típico que se debe especificar es Number.

provider
IFormatProvider

Objeto que proporciona información de análisis específica de la referencia cultural sobre s.

result
Decimal

Cuando este método devuelve , contiene el número de Decimal equivalente al valor numérico contenido en s, si la conversión se realizó correctamente o cero si se produjo un error en la conversión. Se produce un error en la conversión si el parámetro s es null o Empty, no es un número compatible con styleo representa un número menor que Decimal.MinValue o mayor que Decimal.MaxValue. Este parámetro se pasa uininitialized; cualquier valor proporcionado originalmente en result se sobrescribe.

Devoluciones

true si s se convirtió correctamente; de lo contrario, false.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.1

TryParse(String, NumberStyles, IFormatProvider, Decimal)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de cadena de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados. Un valor devuelto indica si la conversión se realizó correctamente o no.

C#
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
C#
public static bool TryParse(string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);

Parámetros

s
String

Representación de cadena del número que se va a convertir.

style
NumberStyles

Combinación bit a bit de valores de enumeración que indica el formato permitido de s. Un valor típico que se debe especificar es Number.

provider
IFormatProvider

Objeto que proporciona información de análisis específica de la referencia cultural sobre s.

result
Decimal

Cuando este método devuelve , contiene el número de Decimal equivalente al valor numérico contenido en s, si la conversión se realizó correctamente o cero si se produjo un error en la conversión. Se produce un error en la conversión si el parámetro s es null o Empty, no es un número compatible con styleo representa un número menor que Decimal.MinValue o mayor que Decimal.MaxValue. Este parámetro se pasa uininitialized; cualquier valor proporcionado originalmente en result se sobrescribe.

Devoluciones

true si s se convirtió correctamente; de lo contrario, false.

Excepciones

style no es un valor NumberStyles.

-o-

style es el valor de AllowHexSpecifier.

Ejemplos

En el ejemplo siguiente se muestra el uso del método TryParse(String, NumberStyles, IFormatProvider, Decimal) para analizar la representación de cadena de un número que tiene un estilo determinado y se da formato a las convenciones de una referencia cultural determinada.

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

Comentarios

Esta sobrecarga difiere del método Decimal.Parse(String, NumberStyles, IFormatProvider) devolviendo un valor booleano que indica si la operación de análisis se realizó correctamente en lugar de devolver el valor numérico analizado. Elimina la necesidad de usar el control de excepciones para probar un FormatException en caso de que s no sea válido y no se pueda analizar correctamente.

El parámetro style define el formato permitido del parámetro s para que la operación de análisis se realice correctamente. Debe ser una combinación de marcas de bits de la enumeración NumberStyles. No se admiten los siguientes miembros de NumberStyles:

Según el valor del estilo, el parámetro s puede incluir los siguientes elementos:

[ws] [$] [sign] [digits,]digits[.fractional-digits][e[sign]digits][ws]

Los elementos entre corchetes ([ y ]) son opcionales. En la tabla siguiente se describe cada elemento.

Elemento Descripción
ws Espacio en blanco opcional. El espacio en blanco puede aparecer al principio de s si style incluye la marca NumberStyles.AllowLeadingWhite. Puede aparecer al final de s si style incluye la marca NumberStyles.AllowTrailingWhite.
$ Símbolo de moneda específico de la referencia cultural. Su posición en la cadena se define mediante las propiedades NumberFormatInfo.CurrencyNegativePattern o NumberFormatInfo.CurrencyPositivePattern del objeto NumberFormatInfo devuelto por el método IFormatProvider.GetFormat del parámetro provider. El símbolo de moneda puede aparecer en s si style incluye la marca NumberStyles.AllowCurrencySymbol.
de signo Un signo opcional.
de dígitos de Secuencia de dígitos que van de 0 a 9.
. Símbolo de separador decimal específico de la referencia cultural.
fracciones de dígitos Secuencia de dígitos que van de 0 a 9.

El parámetro style especifica el formato permitido del parámetro s y puede ser una o varias constantes enumeradas NumberStyles combinadas mediante una operación OR bit a bit. Si style es null, s se interpreta con el estilo NumberStyles.Number.

El parámetro provider es una implementación de IFormatProvider, como un objeto NumberFormatInfo o CultureInfo. El parámetro provider proporciona información específica de la referencia cultural que se usa en el análisis. Si provider es null, se usa la referencia cultural actual del subproceso.

Un objeto Decimal tiene 29 dígitos de precisión. Si s representa un número que tiene más de 29 dígitos, pero tiene una parte fraccionaria y está dentro del intervalo de MaxValue y MinValue, el número se redondea, no trunca, a 29 dígitos con redondeo a más cercano.

Si se encuentra un separador en el parámetro s durante una operación de análisis y los separadores decimales y de grupo aplicables son los mismos, la operación de análisis supone que el separador es un separador decimal en lugar de un separador de grupo. Para obtener más información sobre los separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatory NumberGroupSeparator.

Consulte también

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0