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

 

Publicado: noviembre de 2016

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
Type: System.String

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

provider
Type: System.IFormatProvider

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

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.

Esta sobrecarga de la Parse(String, IFormatProvider) método se utiliza normalmente para convertir texto al que se puede aplicar formato en una variedad de formas de un Double valor. Por ejemplo, se puede utilizar para convertir el texto escrito por un usuario en un cuadro de texto HTML a un valor numérico.

El s parámetro se interpreta mediante una combinación de la NumberStyles.Float y NumberStyles.AllowThousands marcas. El s parámetro puede contener NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, o NumberFormatInfo.NaNSymbol para la referencia cultural especificada por provider, o puede contener una cadena del formulario:

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

Elementos opcionales están entre corchetes ([y]). Elementos que contienen el término "dígitos" constan de una serie de caracteres numéricos comprendidos entre 0 y 9.

Elemento

Descripción

ws

Una serie de caracteres de espacio en blanco.

sign

Símbolos de un signo menos (-) o un signo positivo (+) de símbolos.

dígitos enteros

Una serie de dígitos que comprende del 0 al 9 y que especifican la parte entera del número. Se ejecuta de dígitos enteros pueden estar divididas por un símbolo de separador de grupos. Por ejemplo, en algunas referencias culturales una coma (,) separa los millares. El dígitos enteros puede ser el elemento está ausente if la cadena contiene la dígitos fraccionarios elemento.

.

Un símbolo de separador decimal de referencias culturales específicas.

dígitos fraccionarios

Una serie de dígitos que comprende del 0 al 9 y que especifican la parte fraccionaria del número.

E

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

dígitos exponenciales

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

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

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

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.

El ejemplo siguiente es el botón, haga clic en el controlador de eventos de un formulario Web Forms. Utiliza la matriz devuelta por la HttpRequest.UserLanguages propiedad para determinar la configuración regional del usuario. A continuación, crea una instancia de un CultureInfo objeto que corresponde a esa configuración regional. El NumberFormatInfo objeto al que pertenece a la CultureInfo , a continuación, se pasa el objeto a la Parse(String, IFormatProvider) para convertir el usuario de entrada del método a un Double valor.

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 (OverflowException)
   {
      return;
   }
   // Output number to label on web form
   this.outputNumber.Text = "Number is " + number.ToString();
}

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: