Procedura: aggiungere zeri iniziali a un numero
È possibile aggiungere zeri iniziali a un intero tramite la stringa di formato numerico standard "D" con un identificatore di precisione. È possibile aggiungere zeri iniziali sia a numeri interi sia a numeri a virgola mobile tramite una stringa di formato numerico personalizzata. In questo argomento viene illustrato come utilizzare entrambi i metodi per aggiungere zeri iniziali a un numero.
Per aggiungere zeri iniziali a un intero fino a raggiungere una lunghezza specifica
Determinare il numero di cifre da includere nel 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, chiamarne il metodo ToString(String) e passare la stringa "Dn" come valore del parametro format, dove n rappresenta la lunghezza minima della stringa.
Per visualizzare l'intero come valore esadecimale, chiamarne il metodo ToString(String) e passare la stringa "Xn" come valore del parametro format, dove n rappresenta la lunghezza minima della stringa.
La stringa di formato può anche essere utilizzata in un metodo, ad esempio Format o WriteLine, che utilizza la formattazione composta.
Nell'esempio seguente diversi valori interi vengono formattati con zeri iniziali in modo che il numero formattato presenti una lunghezza totale di almeno otto caratteri.
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 caling 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
byte byteValue = 254;
short shortValue = 10342;
int intValue = 1023983;
long lngValue = 6985321;
ulong ulngValue = UInt64.MaxValue;
// Display integer values by caling 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
Per aggiungere un numero specifico di zeri iniziali a un intero
Determinare il numero di zeri iniziali da includere nel valore intero.
Determinare se si desidera visualizzare l'intero come valore decimale o esadecimale. Per formattarlo come valore decimale occorre utilizzare l'identificatore di formato standard "D". Per formattarlo come valore esadecimale è invece necessario utilizzare l'identificatore di formato standard "X".
Determinare la lunghezza della stringa numerica senza zeri iniziali chiamando il metodo ToString("D").Length o ToString("X").Length del valore intero.
Aggiungere alla lunghezza della stringa numerica senza zeri iniziali il numero di zeri iniziali che si desidera includere nella stringa formattata. In questo modo si definisce la lunghezza totale della stringa con zeri iniziali.
Chiamare il metodo ToString(String) del 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 con zeri iniziali. La stringa di formato "Dn" o "Xn" può anche essere utilizzata in un metodo che supporta la formattazione composta.
Nell'esempio seguente vengono aggiunti cinque zeri iniziali a un valore intero.
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
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
Per aggiungere zeri iniziali a un valore numerico fino a raggiungere una lunghezza specifica
Determinare il numero di cifre a sinistra del separatore decimale da aggiungere nella rappresentazione di stringa del numero. Includere qualsiasi zero iniziale in questo numero totale di cifre.
Definire una stringa di formato numerico personalizzata che utilizza il segnaposto zero ("0") per rappresentare il numero minimo di zeri.
Chiamare il metodo ToString(String) del numero e passare la stringa di formato personalizzata. La stringa di formato personalizzata può anche essere utilizzata in un metodo che supporta la formattazione composta.
Nell'esempio seguente diversi valori numerici vengono formattati con zeri iniziali in modo che il numero formattato presenti una lunghezza totale di almeno otto cifre a sinistra del separatore decimale.
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(sngValue.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
' 01549230
'
' 01053240
' 00103932.52
' 01549230
' 9034521202.93
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(sngValue.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
// 01549230
//
// 01053240
// 00103932.52
// 01549230
// 9034521202.93
Per aggiungere un numero specifico di zeri iniziali a un valore numerico
Determinare il numero di zeri iniziali che il valore numerico deve presentare.
Determinare il numero di cifre a sinistra del separatore decimale nella stringa numerica senza zeri iniziali. Per eseguire questa operazione, seguire la procedura seguente:
Determinare se la rappresentazione di stringa di un numero include un simbolo di separatore decimale.
In tal caso, determinare il numero di caratteri a sinistra del separatore decimale.
oppure
Se non include un simbolo di separatore decimale, determinare la lunghezza della stringa.
Creare una stringa di formato personalizzata che utilizza il segnaposto zero ("0") per ognuno degli zeri iniziali da includere nella stringa nonché il segnaposto zero o il segnaposto cifra ("#") per rappresentare ogni cifra nella stringa predefinita.
Fornire la stringa di formato personalizzata come parametro al metodo ToString(String) del numero oppure a un metodo che supporta la formattazione composta.
Nell'esempio seguente vengono aggiunti cinque zeri iniziali a due valori Double.
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
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
Vedere anche
Concetti
Stringhe di formato numerico personalizzate