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, IFormatProvider)

Convierte la representación en forma de cadena de un número con un formato específico de la referencia cultural 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,
	IFormatProvider provider
)

Parámetros

s
Tipo: System.String
Cadena que contiene un número que se va a convertir.
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 número con un formato válido.

OverflowException

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

Esta sobrecarga del método Parse(String, IFormatProvider) se utiliza normalmente para convertir texto al que se puede dar formato de diversas maneras en un valor Double. Por ejemplo, puede utilizarse para convertir en un valor numérico el texto escrito por un usuario en un cuadro de texto HTML.

El parámetro s se interpreta utilizando una combinación de las marcas NumberStyles.AllowThousands y NumberStyles.Float. El parámetro s puede contener las propiedades NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol o NumberFormatInfo.NaNSymbol de la referencia cultural especificada por provider, o puede contener una cadena con el formato:

[eb][signo]dígitos enteros[.[dígitos fraccionarios]][E[signo]dígitos exponenciales][eb]

Los elementos opcionales aparecen entre corchetes ([ y ]). Los elementos que contienen el término "dígitos" se componen de una serie de caracteres numéricos comprendidos entre 0 y 9.

Elemento

Descripción

eb

Serie de caracteres de espacio en blanco.

sign

Un símbolo de signo negativo (-) o positivo (+).

dígitos enteros

Serie de dígitos comprendidos del 0 al 9 que especifican la parte entera del número. Las series de dígitos enteros pueden estar divididas por un símbolo separador de grupos. Por ejemplo, en algunas referencias culturales la coma (,) separa los millares. El elemento dígitos enteros pueden no estar presentes si la cadena contiene el elemento dígitos fraccionarios.

.

Símbolo separador de decimales específico de la referencia cultural.

dígitos fraccionarios

Serie de dígitos comprendidos del 0 al 9 que especifican la parte fraccionaria del número.

E

El carácter "e" o "E", que indica que el valor se representa en notación exponencial (científica).

dígitos exponenciales

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

Para obtener más información acerca de formatos numéricos, vea el tema Aplicar formato a tipos.

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.

El ejemplo siguiente es el controlador de eventos Click de los botones en un formulario Web Forms. Utiliza la matriz que devuelve la propiedad HttpRequest.UserLanguages para determinar la configuración regional del usuario. A continuación se crean instancias de un objeto CultureInfo que corresponde a esa configuración regional. El objeto NumberFormatInfo que pertenece a ese objeto CultureInfo se pasa a continuación al método Parse(String, IFormatProvider) para convertir la entrada del usuario en un valor Double.


protected void OkToDouble_Click(object sender, EventArgs e)
{
   string locale;
   double number;
   CultureInfo culture;

   // Return if string is empty
   if (String.IsNullOrEmpty(this.inputNumber.Text))
      return;

   // Get locale of web request to determine possible format of number
   if (Request.UserLanguages.Length == 0)
      return;
   locale = Request.UserLanguages[0];
   if (String.IsNullOrEmpty(locale))
      return;

  // Instantiate CultureInfo object for the user's locale
   culture = new CultureInfo(locale);

   // Convert user input from a string to a number
   try
   {
      number = Double.Parse(this.inputNumber.Text, culture.NumberFormat);
   }
   catch (FormatException)
   {
      return;
   }
   catch (Exception)
   {
      return;
   }
   // Output number to label on web form
   this.outputNumber.Text = "Number is " + number.ToString();
}


.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