Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

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

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.

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

public static double Parse(
	string s,
	NumberStyles style,
	IFormatProvider provider
)

Parámetros

s
Tipo: System.String
Cadena que contiene un número que se va a convertir.
style
Tipo: 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 Float combinado con AllowThousands.
provider
Tipo: System.IFormatProvider
Objeto que aporta información de formato específica de la referencia cultural acerca de s.

Valor devuelto

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

ExcepciónCondición
ArgumentNullException

s es null.

FormatException

s no representa un valor numérico.

ArgumentException

style no es un valor de NumberStyles.

O bien

El valor de style es el valor de NumberStyles.AllowHexSpecifier.

OverflowException

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

El parámetro style define los elementos de estilo (como espacios en blanco, separadores de miles y símbolos de divisa) que se permiten en el parámetro s para que la operación de análisis se realice correctamente. Debe ser una combinación de marcas de bit de la enumeración NumberStyles. No se admiten los siguientes miembros de NumberStyles:

El parámetro s puede contener las propiedades NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol o NumberFormatInfo.NaNSymbol de la referencia cultural especificada por provider. En función del valor de style, también puede presentar la estructura:

[ws] [$] [signo][dígitos enteros,]dígitos enteros[.[dígitos fraccionarios]][E[signo]dígitos exponenciales][ws]

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

Elemento

Descripción

eb

Serie de caracteres de espacio en blanco. El espacio en blanco puede aparecer al principio de s si style incluye la marca NumberStyles.AllowLeadingWhite, y puede aparecer al final de s si style incluye la marca NumberStyles.AllowTrailingWhite.

$

Símbolo de divisa específico de la referencia cultural. Su posición en la cadena viene definida por las propiedades NumberFormatInfo.CurrencyNegativePattern y NumberFormatInfo.CurrencyPositivePattern de la referencia cultural actual. El símbolo de divisa de la referencia cultural actual puede aparecer en s si style incluye la marca NumberStyles.AllowCurrencySymbol.

sign

Un símbolo de signo negativo (-) o positivo (+). El signo puede aparecer al principio de s si style incluye la marca NumberStyles.AllowLeadingSign, y puede aparecer al final de s si style incluye la marca NumberStyles.AllowTrailingSign. Pueden usarse paréntesis en s para indicar un valor negativo si style incluye la marca NumberStyles.AllowParentheses.

dígitos enteros

Serie de dígitos comprendidos del 0 al 9 que especifican la parte entera del número. El elemento dígitos enteros pueden no estar presentes si la cadena contiene el elemento dígitos fraccionarios.

,

Un separador de grupos específico de la referencia cultural. El símbolo separador de grupos de la referencia cultural actual puede aparecer en s si style incluye la marca NumberStyles.AllowThousands

.

Símbolo separador de decimales específico de la referencia cultural. El símbolo separador de decimales de la referencia cultural actual puede aparecer en s si style incluye la marca NumberStyles.AllowDecimalPoint.

dígitos fraccionarios

Serie de dígitos comprendidos del 0 al 9 que especifican la parte fraccionaria del número. Pueden aparecer dígitos fraccionarios en s si style incluye la marca NumberStyles.AllowDecimalPoint.

E

El carácter "e" o "E", que indica que el valor se representa en notación exponencial (científica). El parámetro s puede representar un número en notación exponencial si style incluye la marca NumberStyles.AllowExponent.

dígitos exponenciales

Serie de dígitos comprendidos del 0 al 9 que especifican un exponente.

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

Valor de NumberStyles

Elementos permitidos en s además de dígitos

None

Sólo el elemento dígitos enteros.

AllowDecimalPoint

Elementos de separador decimal (,) y dígitos fraccionarios.

AllowExponent

Carácter "e" o "E", que indica notación exponencial. Esta marca por sí sola admite valores con la estructura dígitosEdígitos; se necesitan otras marcas para analizar correctamente cadenas con esos elementos como signos positivos o negativos y separadores decimales.

AllowLeadingWhite

Elemento eb al principio de s.

AllowTrailingWhite

Elemento eb al final de s.

AllowLeadingSign

Elemento signo al principio de s.

AllowTrailingSign

Elemento signo al final de s.

AllowParentheses

Elemento signo en forma de paréntesis delimitando el valor numérico.

AllowThousands

Elemento de separador de miles (.).

AllowCurrencySymbol

El elemento de divisa ($).

Currency

Todos los elementos. Sin embargo, s no puede representar un número hexadecimal o un número en notación exponencial.

Float

Elemento eb al principio o al final de s, signo al principio de s y el símbolo del separador decimal (,). El parámetro s también puede utilizar la notación exponencial.

Number

ws, sign, separador de miles (.) y separador decimal (,).

Any

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

El parámetro provider es una implementación de IFormatProvider cuyo método GetFormat devuelve a un objeto NumberFormatInfo que proporciona información específica de la referencia cultural utilizada para interpretar el formato de s. Normalmente, es un objeto NumberFormatInfo o CultureInfo. Si provider es null o no se puede obtener NumberFormatInfo, se utilizará la información de formato para la actual referencia cultural.

Normalmente, si se pasa al método Double.Parse una cadena creada mediante una llamada al método Double.ToString, se devuelve el valor Double original. Sin embargo, debido a una pérdida de precisión, es posible que los valores no sean iguales. Además, si se intenta analizar la representación de cadena de MinValue o MaxValue, se producirá una excepción OverflowException, tal y como se muestra en el siguiente ejemplo.


   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, durante una operación de análisis, se encuentra un separador en el parámetro s y los separadores aplicables de divisa, número decimal y grupo son iguales, la operación de análisis supone que se trata de un separador decimal en lugar de un separador de grupo. Para obtener más información sobre separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator y NumberGroupSeparator.

En el ejemplo siguiente se muestra el uso del método Parse(String, NumberStyles, IFormatProvider) para asignar varias representaciones de cadena de valores de temperatura a un objeto Temperature.


using System;
using System.Globalization;

public class Temperature
{
   // Parses the temperature from a string. Temperature scale is 
   // indicated by 'F (for Fahrenheit) or 'C (for Celcius) at the end
   // of the string.
   public static Temperature Parse(string s, NumberStyles styles, 
                                   IFormatProvider provider)
   {                                    
      Temperature temp = new Temperature();

      if (s.TrimEnd(null).EndsWith("'F"))
      {
         temp.Value = Double.Parse(s.Remove(s.LastIndexOf((char)39), 2), 
                                   styles, provider);
      }
      else
      {
         if (s.TrimEnd(null).EndsWith("'C"))
            temp.Celsius = Double.Parse(s.Remove(s.LastIndexOf((char)39), 2), 
                                        styles, provider);
         else
            temp.Value = Double.Parse(s, styles, provider);         
      }
      return temp;      
   } 

   // Declare private constructor so Temperature so only Parse method can
   // create a new instance
   private Temperature()   {}

   protected double m_value;

   public double Value 
   {
      get { return m_value; }
      private set { m_value = value; }
   }

   public double Celsius
   {
      get { return (m_value - 32) / 1.8; }
      private set { m_value = value * 1.8 + 32; }
   }

   public double Fahrenheit
   {
      get {return m_value; }
   }      
}

public class TestTemperature
{
   public static void Main()
   {
      string value;
      NumberStyles styles;
      IFormatProvider provider;
      Temperature temp;

      value = "25,3'C";
      styles = NumberStyles.Float;
      provider = CultureInfo.CreateSpecificCulture("fr-FR");
      temp = Temperature.Parse(value, styles, provider);
      Console.WriteLine("{0} degrees Fahrenheit equals {1} degrees Celsius.", 
                        temp.Fahrenheit, temp.Celsius);

      value = " (40) 'C";
      styles = NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite 
               | NumberStyles.AllowParentheses;
      provider = NumberFormatInfo.InvariantInfo;
      temp = Temperature.Parse(value, styles, provider);
      Console.WriteLine("{0} degrees Fahrenheit equals {1} degrees Celsius.", 
                        temp.Fahrenheit, temp.Celsius);

      value = "5,778E03'C";      // Approximate surface temperature of the Sun
      styles = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands |
               NumberStyles.AllowExponent;
      provider = CultureInfo.CreateSpecificCulture("en-GB"); 
      temp = Temperature.Parse(value, styles, provider);
      Console.WriteLine("{0} degrees Fahrenheit equals {1} degrees Celsius.", 
                        temp.Fahrenheit.ToString("N"), temp.Celsius.ToString("N"));
   }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft