Stringhe di formato numerico personalizzato

Una stringa di formato numerico personalizzato creata dall'utente e costituita da uno o più identificatori di formato numerico personalizzato definisce la formattazione dei dati numerici. Viene considerata stringa di formato numerico personalizzato qualsiasi stringa che non rientra nella categoria di stringa di formato numerico standard.

Nella tabella riportata di seguito vengono descritti gli identificatori di formato numerico personalizzato. Per gli esempi dell'output prodotto da ogni identificatore di formato, vedere Esempi di output di stringhe di formato numerico personalizzato. Per ulteriori informazioni, vedere le note che seguono la tabella.

Identificatore di formato Nome Descrizione

0

Segnaposto per zero

Se il valore da formattare dispone di una cifra nella posizione in cui nella stringa di formato si trova uno "0", tale cifra verrà copiata nella stringa di risultati. La posizione dell'ultimo "0" a sinistra prima del separatore decimale e dell'ultimo "0" a destra dopo il separatore decimale determina l'intervallo di cifre sempre presenti nella stringa di risultati.

L'identificatore "00" determina l'arrotondamento del valore alla cifra più vicina prima del decimale, in cui viene sempre utilizzato l'arrotondamento a un valore diverso da zero. La formattazione di 34,5 con "00", ad esempio, restituisce come risultato il valore 35.

#

Segnaposto per cifre

Se il valore da formattare dispone di una cifra nella posizione in cui nella stringa di formato si trova uno "#", tale cifra verrà copiata nella stringa di risultati. In caso contrario, nella stringa di risultati non verrà memorizzato alcun valore in tale posizione.

Si noti che questo identificatore non visualizza mai il carattere "0" se non si tratta di una cifra significativa, anche se "0" è l'unica cifra della stringa. Il carattere "0" viene visualizzato solo se si tratta di una cifra significativa nel numero da visualizzare.

La stringa di formato "##" determina l'arrotondamento del valore alla cifra più vicina prima del decimale, in cui viene sempre utilizzato l'arrotondamento a un valore diverso da zero. La formattazione di 34,5 con "##", ad esempio, restituisce come risultato il valore 35.

.

Separatore decimale

Il primo carattere "," della stringa di formato determina la posizione del separatore decimale nel valore formattato. Eventuali ulteriori caratteri "," vengono ignorati.

Il carattere effettivamente utilizzato come separatore decimale è determinato dalla proprietà NumberDecimalSeparator dell'oggetto NumberFormatInfo che controlla la formattazione.

,

Separatore delle migliaia e rappresentazione in scala dei numeri

Il carattere ',' viene utilizzato sia come identificatore del separatore delle migliaia che come identificatore di rappresentazione in scala dei numeri.

Identificatore del separatore delle migliaia: se viene specificato uno o più caratteri ',' tra due segnaposti per cifre (0 o #) che formattano le cifre integrali di un numero, verrà inserito un carattere di separazione di gruppi tra ogni gruppo di numeri nella parte integrale dell'output.

Le proprietà NumberGroupSeparator e NumberGroupSizes dell'oggetto NumberFormatInfo corrente determinano il carattere utilizzato come separatore di gruppi di numeri e la dimensione di ogni gruppo di numeri. Se ad esempio vengono utilizzate la stringa "#, #" e la lingua inglese per formattare il numero 1000, l'output sarà "1,000".

Identificatore di rappresentazione in scala dei numeri: se viene specificato uno o più caratteri ',' immediatamente a sinistra del separatore decimale esplicito o implicito, il numero da formattare verrà diviso per 1000 ogni volta che è presente un identificatore di rappresentazione in scala dei numeri. Se ad esempio viene utilizzata la stringa "0" per formattare il numero 100 milioni, l'output sarà "100".

È possibile utilizzare gli identificatori del separatore delle migliaia e di rappresentazione in scala dei numeri nella stessa stringa di formato. Se ad esempio vengono utilizzate la stringa "#,0,," e la lingua inglese per formattare il numero un miliardo, l'output sarà "1,000".

%

Segnaposto per percentuale

La presenza di un carattere "%" in una stringa di formato fa sì che un numero venga moltiplicato per 100 prima di essere formattato. Il simbolo appropriato viene inserito nel numero stesso nella posizione in cui è stato inserito il segno "%" nella stringa di formato. Il carattere di percentuale utilizzato dipende dalla classe NumberFormatInfo corrente.

E0

E+0

E-0

e0

e+0

e-0

Notazione scientifica

Se nella stringa di formato è presente una delle stringhe "E", "E+", "E-", "e", "e+" o "e-" immediatamente seguita da almeno un carattere "0", il numero verrà formattato utilizzando la notazione scientifica con una "E" o "e" inserita tra il numero e l'esponente. Il numero dei caratteri "0" che seguono l'indicatore della notazione scientifica determina il numero minimo di cifre da visualizzare nell'output per l'esponente. I formati "E+" ed "e+" indicano che l'esponente deve essere sempre preceduto da un carattere di segno (più o meno). I formati "E", "E-", "e" ed "e-" indicano che solo gli esponenti negativi devono essere preceduti da un carattere di segno.

\

Carattere escape

In C# e C++ il carattere barra rovesciata fa sì che il successivo carattere nella stringa di formato venga interpretato come sequenza di escape. Viene utilizzato con sequenze di formattazione tradizionali come "\n" (nuova riga).

In alcuni linguaggi è necessario che il carattere di escape stesso sia preceduto da un carattere di escape quando viene utilizzato come un valore letterale. In caso contrario in fase di compilazione il carattere verrà interpretato come una sequenza di escape. Utilizzare la stringa "\\" per visualizzare il carattere "\".

Si noti che questo carattere di escape non è supportato in Visual Basic. ControlChars fornisce tuttavia la stessa funzionalità.

'ABC'

"ABC"

Stringa letterale

I caratteri racchiusi tra virgolette semplici o doppie vengono copiati nella stringa risultato e non influiscono sulla formattazione.

;

Separatore di sezione

Il carattere ";" è utilizzato per separare sezioni di valori positivi, negativi e zero nella stringa di formato.

Altro

Tutti gli altri caratteri

Gli altri caratteri vengono copiati nella stringa risultato e non influiscono sulla formattazione.

Note

Valori infiniti a virgola mobile e NaN

Indipendentemente dalla stringa di formato, se il valore di un tipo a virgola mobile Single o Double è un numero infinito positivo, un numero infinito negativo o un valore NaN (Not a Number, non numero), la stringa formattata corrisponderà al valore della proprietà PositiveInfinitySymbol, NegativeInfinitySymbol o NaNSymbol corrispondente specificata dall'oggetto NumberFormatInfo attualmente applicabile.

Impostazioni del Pannello di controllo

Le impostazioni di Opzioni internazionali e della lingua nel Pannello di controllo influiscono sulla stringa risultato prodotta da un'operazione di formattazione. Queste impostazioni vengono utilizzate per inizializzare l'oggetto NumberFormatInfo associato alla lingua del thread corrente, che fornisce i valori utilizzati per definire la formattazione. Computer con impostazioni diverse generano stringhe di risultati diverse.

Arrotondamento e stringhe di formato a virgola fissa

Per le stringhe di formato a virgola fissa, ovvero stringhe di formato non contenenti caratteri di formato in notazione scientifica, i numeri vengono arrotondati al numero di posizioni decimali corrispondente al numero di segnaposti per cifre a destra del separatore decimale. Se la stringa di formato non contiene alcun separatore decimale, il numero verrà arrotondato all'intero più vicino. Se le cifre del numero sono più numerose dei segnaposti per le cifre riportati a sinistra del separatore decimale, le cifre eccedenti verranno copiate nella stringa di risultati immediatamente prima del primo segnaposto per le cifre.

Separatori di sezione e formattazione condizionale

È possibile applicare a una stringa una formattazione differente a seconda che il valore sia positivo, negativo o uguale a zero. A tale scopo, una stringa di formato personalizzato può contenere un massimo di tre sezioni separate da punti e virgola. Queste sezioni sono descritte nella tabella riportata di seguito.

Numero di sezioni Descrizione

Una

La stringa di formato viene applicata a tutti i valori.

Due

La prima sezione viene applicata ai valori positivi e agli zeri, la seconda ai valori negativi.

Se il numero da formattare è negativo, ma diviene zero dopo l'arrotondamento operato sulla base del formato della seconda sezione, lo zero risultante verrà formattato sulla base del formato della prima sezione.

Tre

La prima sezione viene applicata ai valori positivi, la seconda ai valori negativi e la terza agli zeri.

È possibile che la seconda sezione venga lasciata vuota, ovvero senza alcun valore tra i punti e virgola. In questo caso la prima sezione viene applicata a tutti i valori diversi da zero.

Se il numero da formattare è diverso da zero, ma diviene zero dopo l'arrotondamento operato sulla base del formato della prima o della seconda sezione, lo zero risultante verrà formattato sulla base del formato della terza sezione.

Con i separatori di sezione, quando viene formattato il valore finale viene ignorata qualsiasi formattazione preesistente associata a un numero. Quando vengono utilizzati separatori di sezione, ad esempio, i numeri negativi vengono sempre visualizzati senza segno meno. Se si desidera che il valore formattato finale disponga di un segno meno, è opportuno includere il segno meno in modo esplicito nell'ambito dell'identificatore di formato personalizzato.

Nei frammenti di codice riportati di seguito viene illustrato come utilizzare separatori di sezione per produrre stringhe formattate.

Dim MyPos As Double = 19.95
Dim MyNeg As Double = -19.95
Dim MyZero As Double = 0

' In the U.S. English culture, MyString has the value: $19.95.
Dim MyString As String = MyPos.ToString("$#,##0.00;($#,##0.00);Zero")

' In the U.S. English culture, MyString has the value: ($19.95).
' The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero")

' In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero")
double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;

// In the U.S. English culture, MyString has the value: $19.95.
string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: ($19.95).
// The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");

Due esempi di formato personalizzato

Nei frammenti di codice riportati di seguito viene illustrata la formattazione numerica personalizzata. In entrambi i casi il segnaposto per cifre (#) nella stringa di formato personalizzato visualizza i dati numerici e tutti gli altri caratteri vengono copiati nell'output.

Dim myDouble As Double = 1234567890
Dim myString As String = myDouble.ToString( "(###) ### - ####" )
' The value of myString is "(123) 456 – 7890".

Dim MyInt As Integer = 42
MyString = MyInt.ToString( "My Number = #" )
' In the U.S. English culture, MyString has the value: 
' "My Number = 42".
Double myDouble = 1234567890;
String myString = myDouble.ToString( "(###) ### - ####" );
// The value of myString is "(123) 456 – 7890".

int  MyInt = 42;
MyString = MyInt.ToString( "My Number = #" );
// In the U.S. English culture, MyString has the value: 
// "My Number = 42".

Vedere anche

Riferimenti

NumberFormatInfo

Concetti

Stringhe di formato numerico
Esempi di output di stringhe di formato numerico personalizzato
Stringhe di formato numerico standard

Altre risorse

Formattazione dei tipi di dati