TryParse Método (String, NumberStyles, IFormatProvider, Double)
Collapse the table of content
Expand the table of content
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Double.TryParse (Método) (String, NumberStyles, IFormatProvider, Double)

 

Convierte la representación en forma de cadena de un número con un estilo y un formato específico de la referencia cultural especificados en el número de punto flotante de precisión doble equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static bool TryParse(
	string s,
	NumberStyles style,
	IFormatProvider provider,
	out double result
)

Parámetros

s
Type: System.String

Cadena que contiene un número que se va a convertir.

style
Type: System.Globalization.NumberStyles

Combinación bit a bit de valores NumberStyles que indica el formato permitido de s. Un valor que se especifica de forma habitual es NumberStyles.Float combinado con NumberStyles.AllowThousands.

provider
Type: System.IFormatProvider

Un IFormatProvider que proporciona información de formato específica de la referencia cultural acerca de s.

result
Type: System.Double

Cuando el resultado que devuelve este método contiene el número de punto flotante de precisión doble equivalente al valor numérico o al símbolo contenido en s, si la conversión tuvo éxito o cero si falló. Se produce un error en la conversión si el parámetro s es null o String.Empty, no está en un formato compatible con style, representa un número menor que MinValue o mayor que MaxValue, o bien si style no es una combinación válida de constantes enumeradas de NumberStyles. Este parámetro se pasa sin inicializar; cualquier valor proporcionado originalmente en result se sobrescribirá.

Valor devuelto

Type: System.Boolean

true si s se convirtió correctamente; en caso contrario, false.

Exception Condition
ArgumentException

style no es un valor NumberStyles.

-o-

style incluye el valor NumberStyles.AllowHexSpecifier

El TryParse método es similar a la Parse(String, NumberStyles, IFormatProvider) (método), salvo que este método no produce una excepción si se produce un error en la conversión. Si la conversión se realiza correctamente, el valor devuelto es true y la result parámetro se establece en el resultado de la conversión. Si se produce un error en la conversión, el valor devuelto es false y la result parámetro se establece en cero. Esto elimina la necesidad de utilizar el control de excepciones para probar una FormatException en caso de que s no es válido y no pueda analizarse correctamente.

El style parámetro define el formato permitido de la s parámetro para la operación de análisis se realice correctamente. Debe ser una combinación de indicadores de bits de la NumberStyles (enumeración). La siguiente NumberStyles miembros no son compatibles:

El s parámetro puede contener NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, o NumberFormatInfo.NaNSymbol para la referencia cultural indicada por provider. Además, dependiendo del valor de style, el s parámetro puede incluir los siguientes elementos:

[eb] [$] [signo] [dígitos enteros,] dígitos enteros [. dígitos fraccionarios] [e [signo] dígitos exponenciales] [eb]

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

Elemento

Descripción

ws

Espacio en blanco opcional. Espacio en blanco puede aparecer al principio de s Si style incluye la NumberStyles.AllowLeadingWhite marca. Puede aparecer al final de s Si style incluye la NumberStyles.AllowTrailingWhite marca.

$

Un símbolo de moneda específico de la referencia cultural. Su posición en la cadena viene definida por el NumberFormatInfo.CurrencyNegativePattern o NumberFormatInfo.CurrencyPositivePattern Propiedades de la NumberFormatInfo objeto devuelto por la IFormatProvider.GetFormat método de la provider parámetro. El símbolo de moneda puede aparecer en s Si style incluye la NumberStyles.AllowCurrencySymbol marca.

inicio de sesión

Un signo opcional. El signo puede aparecer al principio de s Si style incluye la NumberStyles.AllowLeadingSign marca y puede aparecer al final de s Si style incluye la NumberStyles.AllowTrailingSign marca. Se pueden utilizar paréntesis en s para indicar un valor negativo si style incluye la NumberStyles.AllowParentheses marca.

dígitos enteros

Una serie de dígitos que comprende del 0 al 9 que especifican la parte entera del número. Dígitos enteros pueden estar ausentes si hay dígitos fraccionarios.

,

Miles de la referencia cultural específica símbolo de separador. Miles de la referencia cultural actual puede aparecer el símbolo de separador en s Si style incluye la NumberStyles.AllowThousands marca.

.

Separador decimal de la referencia cultural específica. Símbolo de separador decimal de la referencia cultural actual puede aparecer en s Si style incluye la NumberStyles.AllowDecimalPoint marca.

dígitos fraccionarios

Una serie de dígitos que comprende del 0 al 9 que especifican la parte fraccionaria del número. Pueden aparecer dígitos fraccionarios en s Si style incluye la NumberStyles.AllowDecimalPoint marca.

e

El carácter e o E, que indica que s puede representar un número con notación exponencial. El s parámetro puede representar un número en notación exponencial si el estilo incluye la NumberStyles.AllowExponent marca.

dígitos exponenciales

Una serie de dígitos que comprende del 0 al 9 que especifican a un exponente.

Una cadena formada únicamente por dígitos (que corresponde a la NumberStyles.None estilo) siempre se analiza correctamente. Los restantes System.Globalization.NumberStyles miembros controlan los elementos que pueden estar, aunque no tienen que estar presentes en la cadena de entrada. La tabla siguiente indica cómo individuales NumberStyles marcas afectan a los elementos que pueden estar presentes en s.

Valor NumberStyles

Elementos permitidos en s además de dígitos

None

El dígitos enteros sólo el elemento.

AllowDecimalPoint

El . y dígitos fraccionarios elementos.

AllowExponent

El s parámetro también puede utilizar la notación exponencial. Este marcador por sí solo admite valores en el formulario dígitos enterosEdígitos exponenciales; adicionales se necesitan marcadores para analizar correctamente cadenas en notación exponencial con esos elementos como signos positivos o negativos y los símbolos de separador decimal.

AllowLeadingWhite

El ws elemento situado al principio de s.

AllowTrailingWhite

El ws elemento al final de s.

AllowLeadingSign

El Inicio de sesión elemento situado al principio de s.

AllowTrailingSign

El Inicio de sesión elemento al final de s.

AllowParentheses

El Inicio de sesión elemento en forma de paréntesis delimitando el valor numérico.

AllowThousands

El , elemento.

AllowCurrencySymbol

El $ elemento.

Currency

Todos. El s parámetro no puede representar un número hexadecimal o un número en notación exponencial.

Float

El ws elemento al principio o al final de s, Inicio de sesión al principio de s, y . símbolos. El s parámetro también puede utilizar la notación exponencial.

Number

El ws, sign, miles separador (,), y decimal (.) elementos.

Any

Todos los estilos, excepto s no puede representar un número hexadecimal.

El provider parámetro es un IFormatProvider implementación, como un NumberFormatInfo o CultureInfo objeto. El provider parámetro proporciona información específica de la referencia cultural utilizada en el análisis. Si provider es null o NumberFormatInfo no se puede obtener el objeto, se utiliza la información de formato para la referencia cultural actual.

Se produce un error en la conversión si el s parámetro es null o un valor no numérico, el provider parámetro no produce un NumberFormatInfo objeto, o el style no es una combinación de marcadores de bits de la NumberStyles (enumeración).

Normalmente, si se pasa el Double.TryParse método una cadena que se crea mediante una llamada a la Double.ToString método, el original Double devuelve el valor. Sin embargo, debido a una pérdida de precisión, los valores pueden no ser iguales. Además, al intentar analizar la representación de cadena de MinValue o MaxValue produce una OverflowException, como se muestra en el ejemplo siguiente.

using System;

public class Example
{
   public static void Main()
   {
      string value;
      double number;

      value = Double.MinValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.", 
                           value);

      value = Double.MaxValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.            

Si se encuentra un separador en el s parámetro durante una operación de análisis y la divisa aplicable o número decimal y separadores de grupo son iguales, la operación de análisis supone que se trata de un separador decimal en lugar de un separador de grupos. Para obtener más información acerca de los separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, y NumberGroupSeparator.

En el ejemplo siguiente se muestra el uso de la Double.TryParse(String, NumberStyles, IFormatProvider, Double) método para analizar la representación de cadena de números que tienen un estilo determinado y se aplica formato usando las convenciones de una referencia cultural determinada.

string value;
NumberStyles style;
CultureInfo culture;
double number;

// Parse currency value using en-GB culture.
value = "�1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Double.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 (Double.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 (Double.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 (Double.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'.

Universal Windows Platform
Disponible desde 8
.NET Framework
Disponible desde 1.1
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar:
© 2016 Microsoft