Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Double.ToString (String, IFormatProvider)

 

Data di pubblicazione: ottobre 2016

Converte il valore numerico dell'istanza nella rappresentazione di stringa equivalente usando il formato specificato e le informazioni di formattazione specifiche delle impostazioni cultura.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public string ToString(
	string format,
	IFormatProvider provider
)

Parametri

format
Type: System.String

Stringa di formato numerico.

provider
Type: System.IFormatProvider

Oggetto che fornisce informazioni di formattazione specifiche delle impostazioni cultura.

Valore restituito

Type: System.String

Rappresentazione di stringa del valore dell'istanza corrente, in base a quanto specificato da format e provider.

Il ToString(String, IFormatProvider) formati del metodo un Double valore in un formato specifico delle impostazioni cultura specificato. Se si desidera specificare un formato diverso o delle impostazioni cultura, utilizzare gli altri overload di ToString (metodo), come indicato di seguito:

Per utilizzare il formato

Per impostazioni cultura

Utilizzare l'overload

Formato predefinito ("G")

Impostazioni cultura predefinite del (corrente)

ToString()

Formato predefinito ("G")

Impostazioni cultura specifiche

ToString(IFormatProvider)

Un formato specifico o la precisione

Impostazioni cultura predefinite del (corrente)

ToString(String)

Il valore restituito può essere PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol, o la rappresentazione di stringa di un numero, come specificato da format.

Il format parametro può essere qualsiasi identificatore di formato numerico standard valido, ad eccezione D e X, nonché qualsiasi combinazione di identificatori di formato numerico personalizzate. Se format è null o una stringa vuota, il valore restituito per questa istanza verrà formattata con l'identificatore di formato numerico generale ("G").

.NET Framework fornisce supporto di formattazione completo, come descritto in maggior dettaglio negli argomenti di formattazione seguenti:

Il provider parametro è un IFormatProvider implementazione cui GetFormat metodo restituisce un NumberFormatInfo oggetto. In genere, provider è un CultureInfo oggetto o un NumberFormatInfo oggetto. Il provider parametro fornisce le informazioni specifiche delle impostazioni cultura utilizzate per la formattazione. Se provider è null, il valore restituito viene formattato con il NumberFormatInfo oggetto per le impostazioni cultura correnti.

Per impostazione predefinita, il valore restituito contiene solo 15 cifre di precisione anche se internamente viene gestito un massimo di 17 cifre. Se il valore di questa istanza è maggiore di 15 cifre, ToString restituisce PositiveInfinitySymbol o NegativeInfinitySymbol anziché il numero previsto. Se è necessaria una maggiore precisione, specificare format con la specifica di formato "G17", che restituisce sempre 17 cifre di precisione o "R", che restituisce 15 cifre se il numero può essere rappresentato con tale precisione o 17 cifre se il numero può essere rappresentato solo con la massima precisione.

Note per i chiamanti:

In alcuni casi, i valori Double formattati con la stringa di formato numerico standard "R" non completano il round trip se compilati usando le opzioni /platform:x64 o /platform:anycpu e in esecuzione su sistemi a 64 bit. Per aggirare questo problema, è possibile formattare i valori Double usando la stringa di formato numerico standard "G17". Nell'esempio seguente viene usata la stringa di formato "R" con un valore Double che non completa il round trip e viene anche usata la stringa di formato "G17" per completare correttamente il round trip sul valore originale.

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

L'esempio seguente mostra un Double valore usando ognuno degli identificatori di formato numerico standard supportati per varie impostazioni cultura.

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 %

Nell'esempio seguente viene illustrato l'utilizzo di ToString, considerando un String e IFormatProvider come parametri.

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: