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

Método Double.Parse (String, NumberStyles)

 

Publicado: octubre de 2016

Convierte la representación en forma de cadena de un número con un estilo especificado en el número de punto flotante de precisión doble equivalente.

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

public static double Parse(
	string s,
	NumberStyles style
)

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 los valores de enumeración que indica los elementos de estilo que pueden estar presentes en s. Un valor que se especifica de forma habitual es una combinación de Float combinado con AllowThousands.

Valor devuelto

Type: System.Double

Número de punto flotante de precisión doble equivalente al valor numérico o símbolo especificado en s.

Exception Condition
ArgumentNullException

El valor de s es null.

FormatException

s no representa un número con un formato válido.

OverflowException

s representa un número menor que MinValue o mayor que MaxValue.

ArgumentException

style no es un valor NumberStyles.

-o-

style incluye el valor AllowHexSpecifier

El style parámetro define los elementos de estilo (como espacios en blanco, miles separadores y símbolos de moneda) que se permiten en la s parámetro para la operación de análisis se realice correctamente. Debe ser una combinación de marcadores de bits de la NumberStyles enumeración. El siguiente NumberStyles miembros no son compatibles:

El s parámetro puede contener la referencia cultural actual NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, o NumberFormatInfo.NaNSymbol. Dependiendo del valor de style, también puede tener el formato:

[ws][$][sign][integral-digits[,]]integral-digits[. [dígitos fraccionarios]] [E [inicio de sesión]dígitos exponenciales] [ws]

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

Elemento

Descripción

eb

Una serie de caracteres de espacio en blanco. Espacio en blanco puede aparecer al principio de s si style incluye la NumberStyles.AllowLeadingWhite marca y pueden 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 y NumberFormatInfo.CurrencyPositivePattern propiedades de la referencia cultural actual. Símbolo de divisa de la referencia cultural actual puede aparecer en s si style incluye la NumberStyles.AllowCurrencySymbol marca.

signo

Símbolos de un signo menos (-) o un signo positivo (+) de símbolos. El signo puede aparecer al principio de s si style incluye la NumberStyles.AllowLeadingSign marca y pueden 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 y que especifican la parte entera del número. El dígitos enteros puede ser el elemento está ausente if la cadena contiene la dígitos fraccionarios elemento.

,

Separador de grupos de referencias culturales específicas. Símbolo de separador de grupos de la referencia cultural actual puede aparecer en s si style incluye la NumberStyles.AllowThousands marca

.

Un símbolo de separador decimal de referencias culturales específicas. 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 y que especifican la parte fraccionaria del número. Pueden aparecer dígitos fraccionarios en s si style incluye la NumberStyles.AllowDecimalPoint marca.

E

La "e" o el carácter "E", lo que indica que el valor se representa en notación exponencial (científica). El s parámetro puede representar un número en notación exponencial si style 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. El resto System.Globalization.NumberStyles miembros controlan los elementos que pueden estar presentes, pero no tienen que estar presentes en la cadena de entrada. La tabla siguiente se 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 solo el elemento.

AllowDecimalPoint

El separador decimal (.) y dígitos fraccionarios elementos.

AllowExponent

La "e" o el carácter "E", que indica notación exponencial. Este marcador por sí solo admite valores en el formulario dígitosEdígitos; adicionales se necesitan marcadores para analizar correctamente cadenas 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 situado al final de s.

AllowLeadingSign

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

AllowTrailingSign

El inicio de sesión elemento situado al final de s.

AllowParentheses

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

AllowThousands

Los miles elemento separador (,).

AllowCurrencySymbol

El elemento de moneda ($).

Currency

Todos los elementos. Sin embargo, s 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 sy el punto decimal (.) símbolo. El s parámetro también puede utilizar la notación exponencial.

Number

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

Any

Todos los elementos. Sin embargo, s no puede representar un número hexadecimal.

El s parámetro se analiza utilizando la información de formato en un NumberFormatInfo objeto que se inicializa para la referencia cultural del sistema actual. Para obtener más información, consulta CurrentInfo.

Por lo general, si se pasa el Double.Parse método es una cadena que se crea mediante una llamada a la Double.ToString /método siguiente, la versión original Double se 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.

   string value;

   value = Double.MinValue.ToString();
   try {
      Console.WriteLine(Double.Parse(value));
   }   
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the Double type.",
                        value);
   }

   value = Double.MaxValue.ToString();
   try {
      Console.WriteLine(Double.Parse(value));
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the Double type.",
                        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 la s parámetro durante una operación de análisis y la divisa aplicable o número decimal y separadores de grupos 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 usa el Parse(String, NumberStyles) método para analizar las representaciones de cadena de Double valores mediante la referencia cultural en-US.

public static void Main()
{
   // Set current thread culture to en-US.
   Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

   string value;
   NumberStyles styles;

   // Parse a string in exponential notation with only the AllowExponent flag. 
   value = "-1.063E-02";
   styles = NumberStyles.AllowExponent;
   ShowNumericValue(value, styles);

   // Parse a string in exponential notation
   // with the AllowExponent and Number flags.
   styles = NumberStyles.AllowExponent | NumberStyles.Number;
   ShowNumericValue(value, styles);

   // Parse a currency value with leading and trailing white space, and
   // white space after the U.S. currency symbol.
   value = " $ 6,164.3299  ";
   styles = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
   ShowNumericValue(value, styles);

   // Parse negative value with thousands separator and decimal.
   value = "(4,320.64)";
   styles = NumberStyles.AllowParentheses | NumberStyles.AllowTrailingSign |
            NumberStyles.Float; 
   ShowNumericValue(value, styles);

   styles = NumberStyles.AllowParentheses | NumberStyles.AllowTrailingSign |
            NumberStyles.Float | NumberStyles.AllowThousands;
   ShowNumericValue(value, styles);
}

private static void ShowNumericValue(string value, NumberStyles styles)
{
   double number;
   try
   {
      number = Double.Parse(value, styles);
      Console.WriteLine("Converted '{0}' using {1} to {2}.", 
                        value, styles.ToString(), number);
   }
   catch (FormatException)
   {
      Console.WriteLine("Unable to parse '{0}' with styles {1}.", 
                        value, styles.ToString());
   }
   Console.WriteLine();                           
}   
// The example displays the following output to the console:
//    Unable to parse '-1.063E-02' with styles AllowExponent.
//    
//    Converted '-1.063E-02' using AllowTrailingSign, AllowThousands, Float to -0.01063.
//    
//    Converted ' $ 6,164.3299  ' using Number, AllowCurrencySymbol to 6164.3299.
//    
//    Unable to parse '(4,320.64)' with styles AllowTrailingSign, AllowParentheses, Float.
//    
//    Converted '(4,320.64)' using AllowTrailingSign, AllowParentheses, AllowThousands, Float to -4320.64.   

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: