Como: Preencher um número com zeros à esquerda
Você pode adicionar zeros à esquerda a um inteiro usando a cadeia de caracteres de formato numérico padrão "D" com um especificador de precisão. Você pode adicionar zeros à esquerda a números inteiros e de vírgula flutuante usando uma cadeia de caracteres de formato numérico personalizada. Este artigo mostra como usar ambos os métodos para preencher um número com zeros à esquerda.
Para preencher um inteiro com zeros à esquerda para um comprimento específico
Determine o número mínimo de dígitos que você deseja que o valor inteiro exiba. Inclua quaisquer dígitos à esquerda neste número.
Determine se você deseja exibir o inteiro como um valor decimal ou hexadecimal.
Para exibir o inteiro como um valor decimal, chame seu
ToString(String)
método e passe a cadeia de caracteres "Dn" como o valor doformat
parâmetro, onde n representa o comprimento mínimo da cadeia de caracteres.Para exibir o inteiro como um valor hexadecimal, chame seu
ToString(String)
método e passe a cadeia de caracteres "Xn" como o valor do parâmetro format, onde n representa o comprimento mínimo da cadeia de caracteres.
Você também pode usar a cadeia de caracteres de formato em uma cadeia de caracteres interpolada em C# e Visual Basic. Como alternativa, você pode chamar um método como String.Format ou Console.WriteLine que usa formatação composta.
O exemplo a seguir formata vários valores inteiros com zeros à esquerda para que o comprimento total do número formatado seja de pelo menos oito caracteres.
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
Para preencher um número inteiro com um número específico de zeros à esquerda
Determine quantos zeros à esquerda você deseja que o valor inteiro exiba.
Determine se você deseja exibir o inteiro como um valor decimal ou hexadecimal.
Formatá-lo como um valor decimal requer o especificador de formato padrão "D".
Formatá-lo como um valor hexadecimal requer o especificador de formato padrão "X".
Determine o comprimento da cadeia numérica não acolchoada chamando o valor
ToString("D").Length
inteiro ouToString("X").Length
o método.Adicione ao comprimento da cadeia numérica não acolchoada o número de zeros à esquerda que você deseja na cadeia formatada. O resultado é o comprimento total da cadeia acolchoada.
Chame o método do
ToString(String)
valor inteiro e passe a cadeia de caracteres "Dn" para cadeias decimais e "Xn" para cadeias hexadecimais, onde n representa o comprimento total da cadeia acolchoada. Você também pode usar a cadeia de caracteres de formato "Dn" ou "Xn" em um método que ofereça suporte à formatação composta.
O exemplo a seguir preenche um valor inteiro com cinco zeros à esquerda:
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
Para preencher um valor numérico com zeros à esquerda para um comprimento específico
Determine quantos dígitos à esquerda do decimal você deseja que a representação de cadeia de caracteres do número tenha. Inclua quaisquer zeros à esquerda neste número total de dígitos.
Defina uma cadeia de caracteres de formato numérico personalizada que use o espaço reservado zero ("0") para representar o número mínimo de zeros.
Chame o método do número e passe-lhe a cadeia de
ToString(String)
caracteres de formato personalizado. Você também pode usar a cadeia de caracteres de formato personalizado com interpolação de cadeia de caracteres ou um método que ofereça suporte à formatação composta.
O exemplo a seguir formata vários valores numéricos com zeros à esquerda. Como resultado, o comprimento total do número formatado é de pelo menos oito dígitos à esquerda do decimal.
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
Para preencher um valor numérico com um número específico de zeros à esquerda
Determine quantos zeros à esquerda você deseja que o valor numérico tenha.
Determine o número de dígitos à esquerda do decimal na cadeia numérica não acolchoada:
Determine se a representação da cadeia de caracteres de um número inclui um símbolo de ponto decimal.
Se incluir um símbolo de ponto decimal, determine o número de caracteres à esquerda do ponto decimal. Se ele não incluir um símbolo de ponto decimal, determine o comprimento da cadeia de caracteres.
Crie uma cadeia de caracteres de formato personalizado que use:
O espaço reservado zero ("0") para cada um dos zeros à esquerda a aparecer na cadeia de caracteres.
O espaço reservado zero ou o espaço reservado para dígitos "#" para representar cada dígito na cadeia de caracteres padrão.
Forneça a cadeia de caracteres de formato personalizado como um parâmetro para o método do
ToString(String)
número ou para um método que ofereça suporte à formatação composta.
O exemplo a seguir preenche dois Double valores com cinco zeros à esquerda:
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
Consulte também
- Cadeias de caracteres de formato numérico personalizado
- Standard Numeric Format Strings (Cadeias de Formato Numérico Padrão)
- Formatação composta