Ler em inglês

Partilhar via


Double.ToString Método

Definição

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente.

Sobrecargas

ToString()

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente.

ToString(IFormatProvider)

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente usando as informações de formato específicas da cultura.

ToString(String)

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente usando o formato especificado.

ToString(String, IFormatProvider)

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente usando o formato especificado e as informações de formato específicas da cultura especificada.

ToString()

Origem:
Double.cs
Origem:
Double.cs
Origem:
Double.cs

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente.

public override string ToString ();

Retornos

A representação da cadeia de caracteres do valor dessa instância.

Exemplos

O exemplo a seguir usa o método padrão Double.ToString() para exibir as representações de cadeia de caracteres de Double vários 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());

O exemplo a seguir ilustra o 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);

Comentários

O ToString() método formata um Double valor no formato padrão ("G" ou geral) da cultura atual. Se você quiser especificar um formato, precisão ou cultura diferente, use as outras sobrecargas do ToString método , da seguinte maneira:

Para usar o formato Para cultura Usar a sobrecarga
Formato padrão ("G") Uma cultura específica ToString(IFormatProvider)
Um formato ou precisão específico Cultura padrão (atual) ToString(String)
Um formato ou precisão específico Uma cultura específica ToString(String, IFormatProvider)

O valor de retorno pode ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol ou uma cadeia de caracteres do formulário:

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

Os elementos opcionais são colocados entre colchetes ([ e ]). Os elementos que contêm o termo "digits" consistem em uma série de caracteres numéricos que varia de 0 a 9. Há suporte para os elementos listados na tabela a seguir.

Elemento Descrição
sign Um símbolo de sinal negativo ou de sinal positivo.
dígitos integrais Uma série de dígitos que especificam a parte integral do número. Os dígitos integrais podem estar ausentes caso sejam dígitos fracionários.
'.' Um símbolo de vírgula decimal específico de cultura.
dígitos fracionários Uma série de dígitos que especificam a parte fracionária do número.
'E' Um caractere maiúsculo 'E', indicando notação exponencial (científica).
dígitos exponenciais Uma série de dígitos que especificam um expoente.

Alguns exemplos do valor retornado são "100", "-123.456.789", "123.45E+6", "500", "3.1416", "600", "-0.123" e "-Infinity".

O .NET fornece suporte extensivo à formatação, que é descrito com mais detalhes nos seguintes tópicos de formatação:

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
Double.cs
Origem:
Double.cs
Origem:
Double.cs

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente usando as informações de formato específicas da cultura.

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

Parâmetros

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura.

Retornos

A representação da cadeia de caracteres do valor dessa instância conforme especificado por provider.

Implementações

Exemplos

O exemplo a seguir exibe a representação de cadeia de caracteres de dois Double valores usando CultureInfo objetos que representam várias culturas 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

O exemplo a seguir ilustra o uso de ToString, usando um String e um 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;
        }
    }
}

Comentários

O ToString(IFormatProvider) método formata um Double valor no formato padrão ("G" ou geral) de uma cultura especificada. Se você quiser especificar um formato ou cultura diferente, use as outras sobrecargas do ToString método , da seguinte maneira:

Para usar o formato Para cultura Usar a sobrecarga
Formato padrão ("G") Padrão (atual) ToString()
Um formato ou precisão específico Cultura padrão (atual) ToString(String)
Um formato ou precisão específico Uma cultura específica ToString(String, IFormatProvider)

O valor de retorno pode ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol ou uma cadeia de caracteres do formulário:

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

Os elementos opcionais são colocados entre colchetes ([ e ]). Os elementos que contêm o termo "digits" consistem em uma série de caracteres numéricos que varia de 0 a 9. Há suporte para os elementos listados na tabela a seguir.

Elemento Descrição
sign Um símbolo de sinal negativo ou de sinal positivo.
dígitos integrais Uma série de dígitos que especificam a parte integral do número. Os dígitos integrais podem estar ausentes caso sejam dígitos fracionários.
'.' Um símbolo de vírgula decimal específico de cultura.
dígitos fracionários Uma série de dígitos que especificam a parte fracionária do número.
'E' Um caractere maiúsculo 'E', indicando notação exponencial (científica).
dígitos exponenciais Uma série de dígitos que especificam um expoente.

Alguns exemplos do valor retornado são "100", "-123.456.789", "123.45E+6", "500", "3.1416", "600", "-0.123" e "-Infinity".

Esta instância é formatada com o especificador de formato numérico geral ("G").

O .NET fornece suporte extensivo à formatação, que é descrito com mais detalhes nos seguintes tópicos de formatação:

O parâmetro provider é uma implementação de IFormatProvider cujo método GetFormat retorna um objeto NumberFormatInfo. Normalmente, provider é um objeto CultureInfo ou um objeto NumberFormatInfo. O parâmetro provider fornece informações específicas da cultura usadas na formatação. Se provider for null, o valor retornado será formatado usando o NumberFormatInfo objeto para a cultura atual.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
Double.cs
Origem:
Double.cs
Origem:
Double.cs

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente usando o formato especificado.

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

Parâmetros

format
String

Uma cadeia de caracteres de formato numérico.

Retornos

A representação da cadeia de caracteres do valor dessa instância conforme especificado por format.

Exceções

format é inválido.

Exemplos

O exemplo a seguir define um valor numérico e o formata como um valor de moeda usando a cadeia de caracteres de formato numérico padrão "C" e como um valor numérico para três casas decimais usando a cadeia de caracteres de formato numérico padrão "N". As cadeias de caracteres de resultado são formatadas usando as convenções da cultura en-US. Para obter mais informações sobre cadeias de caracteres de formato numérico, consulte Cadeias de caracteres de formato numérico padrão e cadeias de caracteres 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

O exemplo a seguir exibe vários Double valores usando os especificadores de formato numérico padrão com suporte, juntamente com três cadeias de caracteres de formato numérico personalizado. Uma dessas cadeias de caracteres de formato personalizado ilustra como preencher um Single valor com zeros à esquerda. Além disso, o exemplo usa especificadores de precisão com cada especificador de formato padrão, exceto "R". Os valores dos especificadores de precisão variam de 0 a 3. Para converter os valores numéricos em cadeias de caracteres, o exemplo usa as convenções de formatação da cultura 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

Comentários

O ToString(String) método formata um Double valor em um formato especificado usando as convenções da cultura atual. Se você quiser especificar um formato ou cultura diferente, use as outras sobrecargas do ToString método , da seguinte maneira:

Para usar o formato Para cultura Usar a sobrecarga
Formato padrão ("G") Cultura padrão (atual) ToString()
Formato padrão ("G") Uma cultura específica ToString(IFormatProvider)
Um formato ou precisão específico Uma cultura específica ToString(String, IFormatProvider)

O valor retornado pode ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbolou a representação de cadeia de caracteres de um número, conforme especificado por format.

O parâmetro format pode ser qualquer especificador de formato numérico padrão válido, exceto para D e X, bem como qualquer combinação de especificadores de formato numérico personalizados. Se format for null ou uma cadeia de caracteres vazia, o valor retornado será formatado com o especificador de formato numérico geral ("G").

O .NET fornece suporte extensivo à formatação, que é descrito com mais detalhes nos seguintes tópicos de formatação:

Por padrão, o valor retornado contém apenas 15 dígitos de precisão, embora um máximo de 17 dígitos seja mantido internamente. Se o valor dessa instância tiver mais de 15 dígitos, ToString retornará PositiveInfinitySymbol ou NegativeInfinitySymbol em vez do número esperado. Se você precisar de mais precisão, especifique format com a especificação de formato "G17", que sempre retorna 17 dígitos de precisão, ou "R", que retorna 15 dígitos se o número puder ser representado com essa precisão ou 17 dígitos se o número só puder ser representado com precisão máxima.

Notas aos Chamadores

Em alguns casos, os valores Double formatados com a cadeia de caracteres de formato numérico padrão "R" não realizam a viagem de ida e volta se forem compilados usando as opções /platform:x64 ou /platform:anycpu e executados em sistemas de 64 bits. Para contornar esse problema, você pode formatar Double valores usando a cadeia de caracteres de formato numérico padrão "G17". O exemplo a seguir usa a cadeia de caracteres de formato "R" com um valor Double que não realiza a viagem de ida e volta, e também usa a cadeia de caracteres de formato "G17" para realizar a viagem de ida e volta do 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

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
Double.cs
Origem:
Double.cs
Origem:
Double.cs

Converte o valor numérico dessa instância na representação da cadeia de caracteres equivalente usando o formato especificado e as informações de formato específicas da cultura especificada.

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

Parâmetros

format
String

Uma cadeia de caracteres de formato numérico.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura.

Retornos

A representação da cadeia de caracteres do valor dessa instância conforme especificado por format e provider.

Implementações

Exemplos

O exemplo a seguir exibe um valor usando cada um Double dos especificadores de formato numérico padrão com suporte para várias culturas 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 %

O exemplo a seguir ilustra o uso de ToString, usando um String e um 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;
        }
    }
}

Comentários

O ToString(String, IFormatProvider) método formata um Double valor em um formato especificado de uma cultura especificada. Se você quiser especificar um formato ou cultura diferente, use as outras sobrecargas do ToString método , da seguinte maneira:

Para usar o formato Para cultura Usar a sobrecarga
Formato padrão ("G") Cultura padrão (atual) ToString()
Formato padrão ("G") Uma cultura específica ToString(IFormatProvider)
Um formato ou precisão específico Cultura padrão (atual) ToString(String)

O valor retornado pode ser PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbolou a representação de cadeia de caracteres de um número, conforme especificado por format.

O parâmetro format pode ser qualquer especificador de formato numérico padrão válido, exceto para D e X, bem como qualquer combinação de especificadores de formato numérico personalizados. Se format for null ou uma cadeia de caracteres vazia, o valor retornado para essa instância será formatado com o especificador de formato numérico geral ("G").

O .NET fornece suporte extensivo à formatação, que é descrito com mais detalhes nos seguintes tópicos de formatação:

O parâmetro provider é uma implementação de IFormatProvider cujo método GetFormat retorna um objeto NumberFormatInfo. Normalmente, provider é um objeto CultureInfo ou um objeto NumberFormatInfo. O parâmetro provider fornece informações específicas da cultura usadas na formatação. Se provider for null, o valor retornado será formatado usando o NumberFormatInfo objeto para a cultura atual.

Por padrão, o valor retornado contém apenas 15 dígitos de precisão, embora um máximo de 17 dígitos seja mantido internamente. Se o valor dessa instância tiver mais de 15 dígitos, ToString retornará PositiveInfinitySymbol ou NegativeInfinitySymbol em vez do número esperado. Se você precisar de mais precisão, especifique format com a especificação de formato "G17", que sempre retorna 17 dígitos de precisão, ou "R", que retorna 15 dígitos se o número puder ser representado com essa precisão ou 17 dígitos se o número só puder ser representado com precisão máxima.

Notas aos Chamadores

Em alguns casos, os valores Double formatados com a cadeia de caracteres de formato numérico padrão "R" não realizam a viagem de ida e volta se forem compilados usando as opções /platform:x64 ou /platform:anycpu e executados em sistemas de 64 bits. Para contornar esse problema, você pode formatar Double valores usando a cadeia de caracteres de formato numérico padrão "G17". O exemplo a seguir usa a cadeia de caracteres de formato "R" com um valor Double que não realiza a viagem de ida e volta, e também usa a cadeia de caracteres de formato "G17" para realizar a viagem de ida e volta do 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
   }
}

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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