Stringhe di formato numerico personalizzato
Aggiornamento: Luglio 2008
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 ulteriori informazioni, vedere le note che seguono la tabella.
Identificatore di formato |
Nome |
Descrizione |
---|---|---|
0 |
Segnaposto per zero |
Se nel valore da formattare è presente una cifra nella posizione in cui nella stringa di formato si trova uno "0", tale cifra verrà copiata nella stringa di risultati. In caso contrario, nella stringa di risultati verrà visualizzato uno "0". 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. Nell'esempio seguente vengono visualizzati alcuni valori formattati utilizzando stringhe di formato personalizzate che includono segnaposto per zero.
|
# |
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. Nell'esempio seguente vengono visualizzati alcuni valori formattati utilizzando stringhe di formato personalizzate che includono segnaposto per cifre.
|
. |
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 nella stringa di risultati viene determinato dalla proprietà NumberDecimalSeparator dell'oggetto NumberFormatInfo che controlla la formattazione. Nell'esempio seguente viene utilizzato l'identificatore di formato del separatore decimale per definire la posizione del separatore decimale in alcune stringhe di risultati.
|
, |
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 le impostazioni cultura invarianti 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 le impostazioni cultura invarianti per formattare il numero un miliardo, l'output sarà "1,000". Nell'esempio seguente viene illustrato l'utilizzo della virgola come separatore delle migliaia.
Nell'esempio seguente viene illustrato l'utilizzo della virgola come identificatore di rappresentazione in scala.
|
% |
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. Nell'esempio seguente vengono definite alcune stringhe di formato personalizzate che includono il segnaposto per percentuale.
|
‰ |
Segnaposto per mille |
La presenza di un carattere '‰' (\u2030) in una stringa di formato fa sì che un numero venga moltiplicato per 1000 prima di essere formattato. Il simbolo per mille appropriato viene inserito nella stringa restituita nella posizione in cui è stato inserito il simbolo '‰' nella stringa di formato. Il carattere per mille utilizzato viene definito dalla proprietà NumberFormatInfo.PerMilleSymbol dell'oggetto che fornisce informazioni di formattazione specifiche delle impostazioni cultura. Nell'esempio seguente viene definita una stringa di formato personalizzata che include il segnaposto per mille.
|
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. Nell'esempio seguente vengono formattati alcuni valori numerici utilizzando gli identificatori per notazione scientifica.
|
\ |
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 "\". Questo carattere di escape non è supportato in Visual Basic, tuttavia ControlChars fornisce 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. Se nella stringa di formato personalizzata sono presenti due sezioni, la prima sezione a sinistra definisce la formattazione dei numeri positivi e zero, mentre la sezione a destra definisce la formattazione dei numeri negativi. Se sono presenti tre sezioni, la prima sezione a sinistra definisce la formattazione dei numeri positivi, la sezione al centro definisce la formattazione dei numeri negativi e la sezione a destra definisce la formattazione dei numeri zero. Nell'esempio seguente viene utilizzato l'identificatore di formato per consentire al separatore di sezione di formattare numeri positivi, negativi e zero in modo diverso.
|
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 alle impostazioni cultura 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
Concetti
Stringhe di formato numerico standard
Riferimenti
Altre risorse
Formattazione dei tipi di dati
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Luglio 2008 |
Aggiunto il segnaposto per mille. |
Correzione di errori nel contenuto. |