Condividi tramite


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

  1. Determinare il numero di cifre da includere nel valore intero. Includere qualsiasi cifra iniziale in questo numero.

  2. Determinare se si desidera visualizzare l'intero come valore decimale o esadecimale.

    1. 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.

    2. 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

  1. Determinare il numero di zeri iniziali da includere nel valore intero.

  2. 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".

  3. Determinare la lunghezza della stringa numerica senza zeri iniziali chiamando il metodo ToString("D").Length o ToString("X").Length del valore intero.

  4. 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.

  5. 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

  1. 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.

  2. Definire una stringa di formato numerico personalizzata che utilizza il segnaposto zero ("0") per rappresentare il numero minimo di zeri.

  3. 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

  1. Determinare il numero di zeri iniziali che il valore numerico deve presentare.

  2. Determinare il numero di cifre a sinistra del separatore decimale nella stringa numerica senza zeri iniziali. Per eseguire questa operazione, seguire la procedura seguente:

    1. Determinare se la rappresentazione di stringa di un numero include un simbolo di separatore decimale.

    2. 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.

  3. 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.

  4. 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

Stringhe di formato numerico standard

Formattazione composta