Leer en inglés

Compartir a través de


Double.ToString Método

Definición

Convierte el valor numérico de esta instancia en la representación de cadena equivalente.

Sobrecargas

ToString()

Convierte el valor numérico de esta instancia en la representación de cadena equivalente.

ToString(IFormatProvider)

Convierte el valor numérico de esta instancia en la representación de cadena equivalente usando la información de formato específica de la referencia cultural especificada.

ToString(String)

Convierte el valor numérico de esta instancia en la representación de cadena equivalente usando el formato especificado.

ToString(String, IFormatProvider)

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.

ToString()

Source:
Double.cs
Source:
Double.cs
Source:
Double.cs

Convierte el valor numérico de esta instancia en la representación de cadena equivalente.

public override string ToString ();

Devoluciones

Representación de cadena del valor de esta instancia.

Ejemplos

En el ejemplo siguiente se usa el método predeterminado Double.ToString() para mostrar las representaciones de cadena de un número de Double valores.

double number;

number = 1.6E20;
// Displays 1.6E+20.
Console.WriteLine(number.ToString());

number = 1.6E2;
// Displays 160.
Console.WriteLine(number.ToString());

number = -3.541;
// Displays -3.541.
Console.WriteLine(number.ToString());

number = -1502345222199E-07;
// Displays -150234.5222199.
Console.WriteLine(number.ToString());

number = -15023452221990199574E-09;
// Displays -15023452221.9902.
Console.WriteLine(number.ToString());

number = .60344;
// Displays 0.60344.
Console.WriteLine(number.ToString());

number = .000000001;
// Displays 1E-09.
Console.WriteLine(number.ToString());

En el siguiente ejemplo se muestra el uso de ToString.

bool done = false;
string inp;
do {
   Console.Write("Enter a real number: ");
   inp = Console.ReadLine();
   try {
      d = Double.Parse(inp);
      Console.WriteLine("You entered {0}.", d.ToString());
      done = true;
   }
   catch (FormatException) {
      Console.WriteLine("You did not enter a number.");
   }
   catch (ArgumentNullException) {
      Console.WriteLine("You did not supply any input.");
   }
   catch (OverflowException) {
       Console.WriteLine("The value you entered, {0}, is out of range.", inp);
   }
} while (!done);

Comentarios

El ToString() método da formato a un Double valor en el formato predeterminado ("G" o general) de la referencia cultural actual. Si desea especificar otro formato, precisión o referencia cultural, use las demás sobrecargas del ToString método, como se indica a continuación:

Para usar el formato Para referencia cultural Uso de la sobrecarga
Formato predeterminado ("G") Una referencia cultural específica ToString(IFormatProvider)
Un formato o precisión específicos Referencia cultural predeterminada (actual) ToString(String)
Un formato o precisión específicos Una referencia cultural específica ToString(String, IFormatProvider)

El valor devuelto puede ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbolo una cadena del formulario:

[sign]integral-digits[.[ fractional-digits]][E[sign]exponential-digits]

Los elementos opcionales están enmarcados entre corchetes ([ y ]). Los elementos que contienen el término "dígitos" constan de una serie de caracteres numéricos comprendidos entre 0 y 9. Se admiten los elementos enumerados en la tabla siguiente.

Elemento Descripción
sign Un signo negativo o un símbolo de signo positivo.
dígitos enteros Serie de dígitos que especifican la parte integral del número. Los dígitos enteros pueden estar ausentes si hay fracciones de dígitos.
'.' Símbolo de separador decimal específico de la referencia cultural.
fracciones de dígitos Serie de dígitos que especifican la parte fraccionarcional del número.
'E' Carácter en mayúsculas "E", que indica la notación exponencial (científica).
dígitos exponenciales Serie de dígitos que especifican un exponente.

Algunos ejemplos del valor devuelto son "100", "-123,456,789", "123.45E+6", "500", "3.1416", "600", "-0.123" y "-Infinity".

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

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToString(IFormatProvider)

Source:
Double.cs
Source:
Double.cs
Source:
Double.cs

Convierte el valor numérico de esta instancia en la representación de cadena equivalente usando la información de formato específica de la referencia cultural especificada.

public string ToString (IFormatProvider provider);
public string ToString (IFormatProvider? provider);

Parámetros

provider
IFormatProvider

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

Devoluciones

Representación en forma de cadena del valor de esta instancia, tal y como especifica provider.

Implementaciones

Ejemplos

En el ejemplo siguiente se muestra la representación de cadena de dos Double valores mediante CultureInfo objetos que representan varias referencias culturales diferentes.

double value;

value = -16325.62015;
// Display value using the invariant culture.
Console.WriteLine(value.ToString(CultureInfo.InvariantCulture));
// Display value using the en-GB culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("en-GB")));
// Display value using the de-DE culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("de-DE")));

value = 16034.125E21;
// Display value using the invariant culture.
Console.WriteLine(value.ToString(CultureInfo.InvariantCulture));
// Display value using the en-GB culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("en-GB")));
// Display value using the de-DE culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("de-DE")));
// This example displays the following output to the console:
//       -16325.62015
//       -16325.62015
//       -16325,62015
//       1.6034125E+25
//       1.6034125E+25
//       1,6034125E+25

En el ejemplo siguiente se muestra el uso de ToString, tomando y String como IFormatProvider 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;
        }
    }
}

Comentarios

El ToString(IFormatProvider) método da formato a un Double valor en el formato predeterminado ("G" o general) de una referencia cultural especificada. Si desea especificar otro formato o referencia cultural, use las demás sobrecargas del ToString método , como se indica a continuación:

Para usar el formato Para referencia cultural Uso de la sobrecarga
Formato predeterminado ("G") Valor predeterminado (actual) ToString()
Un formato o precisión específicos Referencia cultural predeterminada (actual) ToString(String)
Un formato o precisión específicos Una referencia cultural específica ToString(String, IFormatProvider)

El valor devuelto puede ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbolo una cadena del formulario:

[sign]integral-digits[.[ fractional-digits]][E[sign]exponential-digits]

Los elementos opcionales están enmarcados entre corchetes ([ y ]). Los elementos que contienen el término "dígitos" constan de una serie de caracteres numéricos comprendidos entre 0 y 9. Se admiten los elementos enumerados en la tabla siguiente.

Elemento Descripción
sign Un signo negativo o un símbolo de signo positivo.
dígitos enteros Serie de dígitos que especifican la parte integral del número. Los dígitos enteros pueden estar ausentes si hay fracciones de dígitos.
'.' Símbolo de separador decimal específico de la referencia cultural.
fracciones de dígitos Serie de dígitos que especifican la parte fraccionarcional del número.
'E' Carácter en mayúsculas "E", que indica la notación exponencial (científica).
dígitos exponenciales Serie de dígitos que especifican un exponente.

Algunos ejemplos del valor devuelto son "100", "-123,456,789", "123.45E+6", "500", "3.1416", "600", "-0.123" y "-Infinity".

Esta instancia tiene el formato del especificador de formato numérico general ("G").

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

El provider parámetro es una IFormatProvider implementación cuyo GetFormat método devuelve un NumberFormatInfo objeto . Normalmente, provider es un CultureInfo objeto o un NumberFormatInfo objeto . El provider parámetro proporciona información específica de la referencia cultural utilizada en el formato. Si provider es null, el valor devuelto se da formato mediante el NumberFormatInfo objeto para la referencia cultural actual.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToString(String)

Source:
Double.cs
Source:
Double.cs
Source:
Double.cs

Convierte el valor numérico de esta instancia en la representación de cadena equivalente usando el formato especificado.

public string ToString (string format);
public string ToString (string? format);

Parámetros

format
String

Cadena de formato numérico.

Devoluciones

Representación en forma de cadena del valor de esta instancia, tal y como especifica format.

Excepciones

format no es válido.

Ejemplos

En el ejemplo siguiente se define un valor numérico y se le da formato como un valor de moneda mediante la cadena de formato numérico estándar "C" y como un valor numérico a tres posiciones decimales mediante la cadena de formato numérico estándar "N". Las cadenas de resultado tienen formato mediante las convenciones de la referencia cultural en-US. Para obtener más información sobre las cadenas de formato numérico, vea Cadenas de formato numérico estándar y Cadenas de formato numérico personalizado.

using System;

public class Example
{
   public static void Main()
   {
      float number = 1764.3789m;

      // Format as a currency value.
      Console.WriteLine(number.ToString("C"));

      // Format as a numeric value with 3 decimal places.
      Console.WriteLine(number.ToString("N3"));
   }
}
// The example displays the following output:
//       $1,764.38
//       1,764.379

En el ejemplo siguiente se muestran varios Double valores mediante los especificadores de formato numérico estándar admitidos junto con tres cadenas de formato numérico personalizado. Una de esas cadenas de formato personalizado ilustra cómo rellenar un Single valor con ceros a la izquierda. Además, en el ejemplo se usan especificadores de precisión con cada especificador de formato estándar, excepto "R". Los valores de los especificadores de precisión van de 0 a 3. Para convertir los valores numéricos en cadenas, en el ejemplo se usan las convenciones de formato de la referencia cultural en-US.

double[] numbers= {1054.32179, -195489100.8377, 1.0437E21,
                   -1.0573e-05};
string[] specifiers = { "C", "E", "e", "F", "G", "N", "P",
                        "R", "#,000.000", "0.###E-000",
                        "000,000,000,000.00###" };
foreach (double number in numbers)
{
   Console.WriteLine("Formatting of {0}:", number);
   foreach (string specifier in specifiers) {
      Console.WriteLine("   {0,-22} {1}",
                        specifier + ":", number.ToString(specifier));
      // Add precision specifiers from 0 to 3.
      if (specifier.Length == 1 & ! specifier.Equals("R")) {
         for (int precision = 0; precision <= 3; precision++) {
            string pSpecifier = String.Format("{0}{1}", specifier, precision);
            Console.WriteLine("   {0,-22} {1}",
                              pSpecifier + ":", number.ToString(pSpecifier));
         }
         Console.WriteLine();
      }
   }
   Console.WriteLine();
}
// The example displays the following output to the console:
//       Formatting of 1054.32179:
//          C:                     $1,054.32
//          C0:                    $1,054
//          C1:                    $1,054.3
//          C2:                    $1,054.32
//          C3:                    $1,054.322
//
//          E:                     1.054322E+003
//          E0:                    1E+003
//          E1:                    1.1E+003
//          E2:                    1.05E+003
//          E3:                    1.054E+003
//
//          e:                     1.054322e+003
//          e0:                    1e+003
//          e1:                    1.1e+003
//          e2:                    1.05e+003
//          e3:                    1.054e+003
//
//          F:                     1054.32
//          F0:                    1054
//          F1:                    1054.3
//          F2:                    1054.32
//          F3:                    1054.322
//
//          G:                     1054.32179
//          G0:                    1054.32179
//          G1:                    1E+03
//          G2:                    1.1E+03
//          G3:                    1.05E+03
//
//          N:                     1,054.32
//          N0:                    1,054
//          N1:                    1,054.3
//          N2:                    1,054.32
//          N3:                    1,054.322
//
//          P:                     105,432.18 %
//          P0:                    105,432 %
//          P1:                    105,432.2 %
//          P2:                    105,432.18 %
//          P3:                    105,432.179 %
//
//          R:                     1054.32179
//          #,000.000:             1,054.322
//          0.###E-000:            1.054E003
//          000,000,000,000.00###: 000,000,001,054.32179
//
//       Formatting of -195489100.8377:
//          C:                     ($195,489,100.84)
//          C0:                    ($195,489,101)
//          C1:                    ($195,489,100.8)
//          C2:                    ($195,489,100.84)
//          C3:                    ($195,489,100.838)
//
//          E:                     -1.954891E+008
//          E0:                    -2E+008
//          E1:                    -2.0E+008
//          E2:                    -1.95E+008
//          E3:                    -1.955E+008
//
//          e:                     -1.954891e+008
//          e0:                    -2e+008
//          e1:                    -2.0e+008
//          e2:                    -1.95e+008
//          e3:                    -1.955e+008
//
//          F:                     -195489100.84
//          F0:                    -195489101
//          F1:                    -195489100.8
//          F2:                    -195489100.84
//          F3:                    -195489100.838
//
//          G:                     -195489100.8377
//          G0:                    -195489100.8377
//          G1:                    -2E+08
//          G2:                    -2E+08
//          G3:                    -1.95E+08
//
//          N:                     -195,489,100.84
//          N0:                    -195,489,101
//          N1:                    -195,489,100.8
//          N2:                    -195,489,100.84
//          N3:                    -195,489,100.838
//
//          P:                     -19,548,910,083.77 %
//          P0:                    -19,548,910,084 %
//          P1:                    -19,548,910,083.8 %
//          P2:                    -19,548,910,083.77 %
//          P3:                    -19,548,910,083.770 %
//
//          R:                     -195489100.8377
//          #,000.000:             -195,489,100.838
//          0.###E-000:            -1.955E008
//          000,000,000,000.00###: -000,195,489,100.8377
//
//       Formatting of 1.0437E+21:
//          C:                     $1,043,700,000,000,000,000,000.00
//          C0:                    $1,043,700,000,000,000,000,000
//          C1:                    $1,043,700,000,000,000,000,000.0
//          C2:                    $1,043,700,000,000,000,000,000.00
//          C3:                    $1,043,700,000,000,000,000,000.000
//
//          E:                     1.043700E+021
//          E0:                    1E+021
//          E1:                    1.0E+021
//          E2:                    1.04E+021
//          E3:                    1.044E+021
//
//          e:                     1.043700e+021
//          e0:                    1e+021
//          e1:                    1.0e+021
//          e2:                    1.04e+021
//          e3:                    1.044e+021
//
//          F:                     1043700000000000000000.00
//          F0:                    1043700000000000000000
//          F1:                    1043700000000000000000.0
//          F2:                    1043700000000000000000.00
//          F3:                    1043700000000000000000.000
//
//          G:                     1.0437E+21
//          G0:                    1.0437E+21
//          G1:                    1E+21
//          G2:                    1E+21
//          G3:                    1.04E+21
//
//          N:                     1,043,700,000,000,000,000,000.00
//          N0:                    1,043,700,000,000,000,000,000
//          N1:                    1,043,700,000,000,000,000,000.0
//          N2:                    1,043,700,000,000,000,000,000.00
//          N3:                    1,043,700,000,000,000,000,000.000
//
//          P:                     104,370,000,000,000,000,000,000.00 %
//          P0:                    104,370,000,000,000,000,000,000 %
//          P1:                    104,370,000,000,000,000,000,000.0 %
//          P2:                    104,370,000,000,000,000,000,000.00 %
//          P3:                    104,370,000,000,000,000,000,000.000 %
//
//          R:                     1.0437E+21
//          #,000.000:             1,043,700,000,000,000,000,000.000
//          0.###E-000:            1.044E021
//          000,000,000,000.00###: 1,043,700,000,000,000,000,000.00
//
//       Formatting of -1.0573E-05:
//          C:                     $0.00
//          C0:                    $0
//          C1:                    $0.0
//          C2:                    $0.00
//          C3:                    $0.000
//
//          E:                     -1.057300E-005
//          E0:                    -1E-005
//          E1:                    -1.1E-005
//          E2:                    -1.06E-005
//          E3:                    -1.057E-005
//
//          e:                     -1.057300e-005
//          e0:                    -1e-005
//          e1:                    -1.1e-005
//          e2:                    -1.06e-005
//          e3:                    -1.057e-005
//
//          F:                     0.00
//          F0:                    0
//          F1:                    0.0
//          F2:                    0.00
//          F3:                    0.000
//
//          G:                     -1.0573E-05
//          G0:                    -1.0573E-05
//          G1:                    -1E-05
//          G2:                    -1.1E-05
//          G3:                    -1.06E-05
//
//          N:                     0.00
//          N0:                    0
//          N1:                    0.0
//          N2:                    0.00
//          N3:                    0.000
//
//          P:                     0.00 %
//          P0:                    0 %
//          P1:                    0.0 %
//          P2:                    0.00 %
//          P3:                    -0.001 %
//
//          R:                     -1.0573E-05
//          #,000.000:             000.000
//          0.###E-000:            -1.057E-005
//          000,000,000,000.00###: -000,000,000,000.00001

Comentarios

El ToString(String) método da formato a un Double valor en un formato especificado mediante las convenciones de la referencia cultural actual. Si desea especificar otro formato o referencia cultural, use las demás sobrecargas del ToString método , como se indica a continuación:

Para usar el formato Para referencia cultural Uso de la sobrecarga
Formato predeterminado ("G") Referencia cultural predeterminada (actual) ToString()
Formato predeterminado ("G") Una referencia cultural específica ToString(IFormatProvider)
Un formato o precisión específicos Una referencia cultural específica ToString(String, IFormatProvider)

El valor devuelto puede ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbolo la representación de cadena de un número, según lo especificado por format.

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

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

De forma predeterminada, el valor devuelto solo contiene 15 dígitos de precisión, aunque un máximo de 17 dígitos se mantiene internamente. 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 necesita más 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 solo se puede representar con precisión máxima.

Notas a los autores de las llamadas

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;

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");
      double roundTripped = double.Parse(valueString);
      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");
      double roundTripped17 = double.Parse(valueString17);
      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

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToString(String, IFormatProvider)

Source:
Double.cs
Source:
Double.cs
Source:
Double.cs

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.

public string ToString (string format, IFormatProvider provider);
public string ToString (string? format, IFormatProvider? provider);

Parámetros

format
String

Cadena de formato numérico.

provider
IFormatProvider

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

Devoluciones

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

Implementaciones

Ejemplos

En el ejemplo siguiente se muestra un Double valor que usa cada uno de los especificadores de formato numérico estándar admitidos 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, tomando y String como IFormatProvider 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;
        }
    }
}

Comentarios

El ToString(String, IFormatProvider) método da formato a un Double valor en un formato especificado de una referencia cultural especificada. Si desea especificar otro formato o referencia cultural, use las demás sobrecargas del ToString método , como se indica a continuación:

Para usar el formato Para referencia cultural Uso de la sobrecarga
Formato predeterminado ("G") Referencia cultural predeterminada (actual) ToString()
Formato predeterminado ("G") Una referencia cultural específica ToString(IFormatProvider)
Un formato o precisión específicos Referencia cultural predeterminada (actual) ToString(String)

El valor devuelto puede ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbolo la representación de cadena de un número, según lo especificado por format.

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

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

El provider parámetro es una IFormatProvider implementación cuyo GetFormat método devuelve un NumberFormatInfo objeto . Normalmente, provider es un CultureInfo objeto o un NumberFormatInfo objeto . El provider parámetro proporciona información específica de la referencia cultural utilizada en el formato. Si provider es null, el valor devuelto se da formato mediante el NumberFormatInfo objeto para la referencia cultural actual.

De forma predeterminada, el valor devuelto solo contiene 15 dígitos de precisión, aunque un máximo de 17 dígitos se mantiene internamente. 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 necesita más 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 solo se puede representar con precisión máxima.

Notas a los autores de las llamadas

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
   }
}

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0