Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile aggiungere zeri iniziali a un numero intero usando la stringa di formato numerico standard "D" con un identificatore di precisione. È possibile aggiungere zeri iniziali ai numeri interi e a virgola mobile usando una stringa di formato numerico personalizzata. Questo articolo illustra come usare entrambi i metodi per riempire un numero con zeri iniziali.
Per riempire un numero intero con zeri iniziali fino a raggiungere una lunghezza specifica
Determinare il numero minimo di cifre da visualizzare per il valore intero. Includere qualsiasi cifra iniziale in questo numero.
Determinare se si desidera visualizzare l'intero come valore decimale o esadecimale.
Per visualizzare l'intero come valore decimale, chiamare il
ToString(String)
relativo metodo e passare la stringa "Dn" come valore delformat
parametro, dove n rappresenta la lunghezza minima della stringa.Per visualizzare l'intero come valore esadecimale, chiamare il
ToString(String)
relativo metodo e passare la stringa "Xn" come valore del parametro di formato, dove n rappresenta la lunghezza minima della stringa.
È anche possibile usare la stringa di formato in una stringa interpolata sia in C# che in Visual Basic. In alternativa, è possibile chiamare un metodo come String.Format o Console.WriteLine che usa la formattazione composita.
Nell'esempio seguente vengono formattati diversi valori interi con zeri iniziali in modo che la lunghezza totale del numero formattato sia di almeno otto caratteri.
byte byteValue = 254;
short shortValue = 10342;
int intValue = 1023983;
long lngValue = 6985321;
ulong ulngValue = UInt64.MaxValue;
// Display integer values by calling the ToString method.
Console.WriteLine("{0,22} {1,22}", byteValue.ToString("D8"), byteValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", shortValue.ToString("D8"), shortValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", intValue.ToString("D8"), intValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", lngValue.ToString("D8"), lngValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", ulngValue.ToString("D8"), ulngValue.ToString("X8"));
Console.WriteLine();
// Display the same integer values by using composite formatting.
Console.WriteLine("{0,22:D8} {0,22:X8}", byteValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", shortValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", intValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", lngValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", ulngValue);
// The example displays the following output:
// 00000254 000000FE
// 00010342 00002866
// 01023983 000F9FEF
// 06985321 006A9669
// 18446744073709551615 FFFFFFFFFFFFFFFF
//
// 00000254 000000FE
// 00010342 00002866
// 01023983 000F9FEF
// 06985321 006A9669
// 18446744073709551615 FFFFFFFFFFFFFFFF
// 18446744073709551615 FFFFFFFFFFFFFFFF
Dim byteValue As Byte = 254
Dim shortValue As Short = 10342
Dim intValue As Integer = 1023983
Dim lngValue As Long = 6985321
Dim ulngValue As ULong = UInt64.MaxValue
' Display integer values by calling the ToString method.
Console.WriteLine("{0,22} {1,22}", byteValue.ToString("D8"), byteValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", shortValue.ToString("D8"), shortValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", intValue.ToString("D8"), intValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", lngValue.ToString("D8"), lngValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", ulngValue.ToString("D8"), ulngValue.ToString("X8"))
Console.WriteLine()
' Display the same integer values by using composite formatting.
Console.WriteLine("{0,22:D8} {0,22:X8}", byteValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", shortValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", intValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", lngValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", ulngValue)
' The example displays the following output:
' 00000254 000000FE
' 00010342 00002866
' 01023983 000F9FEF
' 06985321 006A9669
' 18446744073709551615 FFFFFFFFFFFFFFFF
'
' 00000254 000000FE
' 00010342 00002866
' 01023983 000F9FEF
' 06985321 006A9669
' 18446744073709551615 FFFFFFFFFFFFFFFF
Per riempire un numero intero con un numero specifico di zeri iniziali
Determinare il numero di zeri iniziali da visualizzare per il valore intero.
Determinare se si desidera visualizzare l'intero come valore decimale o esadecimale.
La formattazione come valore decimale richiede l'identificatore di formato standard "D".
La formattazione come valore esadecimale richiede l'identificatore di formato standard "X".
Determinare la lunghezza della stringa numerica senza riempimento chiamando il metodo
ToString("D").Length
oToString("X").Length
del valore intero.Aggiungi alla lunghezza della stringa numerica non riempita il numero di zeri iniziali che si desidera nella stringa formattata. Il risultato è la lunghezza totale della stringa riempita.
Chiamare il metodo del
ToString(String)
valore intero e passare la stringa "Dn" per le stringhe decimali e "Xn" per le stringhe esadecimali, dove n rappresenta la lunghezza totale della stringa riempita. È anche possibile usare la stringa di formato "Dn" o "Xn" in un metodo che supporta la formattazione composita.
Nel seguente esempio, un valore intero viene riempito con cinque zeri iniziali.
int value = 160934;
int decimalLength = value.ToString("D").Length + 5;
int hexLength = value.ToString("X").Length + 5;
Console.WriteLine(value.ToString("D" + decimalLength.ToString()));
Console.WriteLine(value.ToString("X" + hexLength.ToString()));
// The example displays the following output:
// 00000160934
// 00000274A6
Dim value As Integer = 160934
Dim decimalLength As Integer = value.ToString("D").Length + 5
Dim hexLength As Integer = value.ToString("X").Length + 5
Console.WriteLine(value.ToString("D" + decimalLength.ToString()))
Console.WriteLine(value.ToString("X" + hexLength.ToString()))
' The example displays the following output:
' 00000160934
' 00000274A6
Per aggiungere un valore numerico con zeri iniziali a una lunghezza specifica
Determinare il numero di cifre a sinistra del decimale in cui si desidera che la rappresentazione di stringa del numero abbia. Includere eventuali zeri iniziali in questo numero totale di cifre.
Definire una stringa di formato numerico personalizzata che usa il segnaposto zero ("0") per rappresentare il numero minimo di zeri.
Chiamare il metodo del
ToString(String)
numero e passarlo alla stringa di formato personalizzata. È anche possibile usare la stringa di formato personalizzata con l'interpolazione di stringhe o un metodo che supporta la formattazione composita.
Nell'esempio seguente vengono formattati diversi valori numerici con zeri iniziali. Di conseguenza, la lunghezza totale del numero formattato è di almeno otto cifre a sinistra del decimale.
string fmt = "00000000.##";
int intValue = 1053240;
decimal decValue = 103932.52m;
float sngValue = 1549230.10873992f;
double dblValue = 9034521202.93217412;
// Display the numbers using the ToString method.
Console.WriteLine(intValue.ToString(fmt));
Console.WriteLine(decValue.ToString(fmt));
Console.WriteLine(sngValue.ToString(fmt));
Console.WriteLine(dblValue.ToString(fmt));
Console.WriteLine();
// Display the numbers using composite formatting.
string formatString = " {0,15:" + fmt + "}";
Console.WriteLine(formatString, intValue);
Console.WriteLine(formatString, decValue);
Console.WriteLine(formatString, sngValue);
Console.WriteLine(formatString, dblValue);
// The example displays the following output:
// 01053240
// 00103932.52
// 01549230
// 9034521202.93
//
// 01053240
// 00103932.52
// 01549230
// 9034521202.93
Dim fmt As String = "00000000.##"
Dim intValue As Integer = 1053240
Dim decValue As Decimal = 103932.52d
Dim sngValue As Single = 1549230.10873992
Dim dblValue As Double = 9034521202.93217412
' Display the numbers using the ToString method.
Console.WriteLine(intValue.ToString(fmt))
Console.WriteLine(decValue.ToString(fmt))
Console.WriteLine(sngValue.ToString(fmt))
Console.WriteLine(dblValue.ToString(fmt))
Console.WriteLine()
' Display the numbers using composite formatting.
Dim formatString As String = " {0,15:" + fmt + "}"
Console.WriteLine(formatString, intValue)
Console.WriteLine(formatString, decValue)
Console.WriteLine(formatString, sngValue)
Console.WriteLine(formatString, dblValue)
' The example displays the following output:
' 01053240
' 00103932.52
' 01549230
' 9034521202.93
'
' 01053240
' 00103932.52
' 01549230
' 9034521202.93
Per riempire un valore numerico con un numero specifico di zeri iniziali
Determinare quanti zeri iniziali si desidera che il valore numerico abbia.
Determinare il numero di cifre a sinistra del decimale nella stringa numerica non padded:
Determinare se la rappresentazione di stringa di un numero include un simbolo di virgola decimale.
Se include un simbolo di virgola decimale, determinare il numero di caratteri a sinistra del separatore decimale. Se non include un simbolo di virgola decimale, determinare la lunghezza della stringa.
Creare una stringa di formato personalizzata che usa:
- Segnaposto zero ("0") per ognuno degli zeri iniziali da visualizzare nella stringa.
- Segnaposto zero o segnaposto di cifra "#" per rappresentare ogni cifra nella stringa predefinita.
Fornire la stringa di formato personalizzata come parametro al metodo del
ToString(String)
numero o a un metodo che supporta la formattazione composita.
Nell'esempio seguente vengono vuoti due Double valori con cinque zeri iniziali:
double[] dblValues = { 9034521202.93217412, 9034521202 };
foreach (double dblValue in dblValues)
{
string decSeparator = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
string fmt, formatString;
if (dblValue.ToString().Contains(decSeparator))
{
int digits = dblValue.ToString().IndexOf(decSeparator);
fmt = new String('0', 5) + new String('#', digits) + ".##";
}
else
{
fmt = new String('0', dblValue.ToString().Length);
}
formatString = "{0,20:" + fmt + "}";
Console.WriteLine(dblValue.ToString(fmt));
Console.WriteLine(formatString, dblValue);
}
// The example displays the following output:
// 000009034521202.93
// 000009034521202.93
// 9034521202
// 9034521202
Dim dblValues() As Double = {9034521202.93217412, 9034521202}
For Each dblValue As Double In dblValues
Dim decSeparator As String = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator
Dim fmt, formatString As String
If dblValue.ToString.Contains(decSeparator) Then
Dim digits As Integer = dblValue.ToString().IndexOf(decSeparator)
fmt = New String("0"c, 5) + New String("#"c, digits) + ".##"
Else
fmt = New String("0"c, dblValue.ToString.Length)
End If
formatString = "{0,20:" + fmt + "}"
Console.WriteLine(dblValue.ToString(fmt))
Console.WriteLine(formatString, dblValue)
Next
' The example displays the following output:
' 000009034521202.93
' 000009034521202.93
' 9034521202
' 9034521202