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.ToString (String, IFormatProvider)

 

Publicado: octubre de 2016

Convierte el valor numérico de esta instancia en su representación de cadena equivalente mediante el formato y la información de formato específica de la referencia cultural que se especificaran.

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

public string ToString(
	string format,
	IFormatProvider provider
)

Parámetros

format
Type: System.String

Cadena de formato numérico.

provider
Type: System.IFormatProvider

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

Valor devuelto

Type: System.String

Representación de cadena del valor de esta instancia, tal y como especifican format y provider.

El ToString(String, IFormatProvider) método formatos un Double valor en un formato específico de la referencia cultural especificada. Si desea especificar un formato diferente o la referencia cultural, use las otras sobrecargas de la ToString método, tal como se indica a continuación:

Usar formato

Para la referencia cultural

Use la sobrecarga

Formato predeterminado ("G")

Referencia cultural predeterminada de (actual).

ToString()

Formato predeterminado ("G")

Una referencia cultural específica

ToString(IFormatProvider)

Un formato concreto o la precisión

Referencia cultural predeterminada de (actual).

ToString(String)

El valor devuelto puede ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol, o la representación de cadena de un número, tal y como especifica format.

El format parámetro puede ser cualquier especificador de formato numérico estándar válido salvo D y X, así como cualquier combinación de especificadores de formato numérico personalizado. Si format es null o una cadena vacía, el valor devuelto de esta instancia está formateada con el especificador de formato numérico general ("G").

.NET Framework proporciona una amplia compatibilidad de formato, que se describe con más detalle en los temas de formato siguientes:

El provider parámetro es un IFormatProvider implementación cuyo GetFormat método devuelve un NumberFormatInfo objeto. Por lo general, provider es un CultureInfo objeto o un NumberFormatInfo objeto. El provider parámetro proporciona información específica de la referencia cultural utilizada para dar formato. Si provider es null, el valor devuelto se representa con la NumberFormatInfo objeto para la referencia cultural actual.

De forma predeterminada, el valor devuelto solo contiene 15 dígitos de precisión, aunque internamente se conserva 17 dígitos como máximo. Si el valor de esta instancia tiene más de 15 dígitos, ToString devuelve PositiveInfinitySymbol o NegativeInfinitySymbol en lugar del número esperado. Si se requiere mayor precisión, especifique format con la especificación de formato "G17", que siempre devuelve 17 dígitos de precisión, o "R", que devuelve 15 dígitos si el número se puede representar con esa precisión o 17 dígitos si el número sólo se puede representar con precisión máxima.

Notas para llamadores:

En algunos casos, los valores Double con el formato de cadena numérica estándar "R" no realizan correctamente la operación de ida y vuelta si se compilan usando los modificadores /platform:x64 o /platform:anycpu y se ejecutan en sistemas de 64 bits. Para evitar este problema, puede dar formato a los valores Double usando la cadena de formato numérico estándar "G17". En el ejemplo siguiente se usa la cadena de formato "R" con un valor Double que no realiza correctamente la operación de ida y vuelta, y usa también la cadena de formato "G17" para realizar correctamente la operación de ida y vuelta del valor original.

using System;
using System.Globalization;

public class Example
{
   static void Main(string[] args)
   {
      Console.WriteLine("Attempting to round-trip a Double with 'R':");
      double initialValue = 0.6822871999174;
      string valueString = initialValue.ToString("R",
                                                 CultureInfo.InvariantCulture);
      double roundTripped = double.Parse(valueString,
                                         CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped, initialValue.Equals(roundTripped));

      Console.WriteLine("Attempting to round-trip a Double with 'G17':");
      string valueString17 = initialValue.ToString("G17",
                                                   CultureInfo.InvariantCulture);
      double roundTripped17 = double.Parse(valueString17,
                                           CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped17, initialValue.Equals(roundTripped17));
   }
}
// If compiled to an application that targets anycpu or x64 and run on an x64 system,
// the example displays the following output:
//       Attempting to round-trip a Double with 'R':
//       0.6822871999174 = 0.68228719991740006: False
//
//       Attempting to round-trip a Double with 'G17':
//       0.6822871999174 = 0.6822871999174: True

En el ejemplo siguiente se muestra un Double valor con cada uno de los especificadores de formato numérico estándar compatibles para varias referencias culturales diferentes.

double value = 16325.62901;
string specifier;
CultureInfo culture;

// Use standard numeric format specifiers.
specifier = "G";
culture = CultureInfo.CreateSpecificCulture("eu-ES");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16325,62901
Console.WriteLine(value.ToString(specifier, CultureInfo.InvariantCulture));
// Displays:    16325.62901

specifier = "C";
culture = CultureInfo.CreateSpecificCulture("en-US");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    $16,325.63
culture = CultureInfo.CreateSpecificCulture("en-GB");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    £16,325.63

specifier = "E04";
culture = CultureInfo.CreateSpecificCulture("sv-SE");
Console.WriteLine(value.ToString(specifier, culture));
// Displays: 1,6326E+004   
 culture = CultureInfo.CreateSpecificCulture("en-NZ");
 Console.WriteLine(value.ToString(specifier, culture));
// Displays:    1.6326E+004   

specifier = "F";
culture = CultureInfo.CreateSpecificCulture("fr-FR");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16325,63
culture = CultureInfo.CreateSpecificCulture("en-CA");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16325.63

specifier = "N";
culture = CultureInfo.CreateSpecificCulture("es-ES");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16.325,63
culture = CultureInfo.CreateSpecificCulture("fr-CA");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16 325,63

specifier = "P";
culture = CultureInfo.InvariantCulture;
Console.WriteLine((value/10000).ToString(specifier, culture));
// Displays:    163.26 %
culture = CultureInfo.CreateSpecificCulture("ar-EG");
Console.WriteLine((value/10000).ToString(specifier, culture));
// Displays:    163.256 %

En el ejemplo siguiente se muestra el uso de ToString, teniendo un String y un IFormatProvider como parámetros.

public class Temperature : IFormattable {
	// IFormattable.ToString implementation.
	public string ToString(string format, IFormatProvider provider) {
		if( format != null ) {
			if( format.Equals("F") ) {
				return String.Format("{0}'F", this.Value.ToString());
			}
			if( format.Equals("C") ) {
				return String.Format("{0}'C", this.Celsius.ToString());
			}
		}

		return m_value.ToString(format, provider);
	}

	// The value holder
	protected double m_value;

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

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

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: