Porady: uzupełnianie liczby zerami prowadzącymi
Można dodać zera wiodące do liczby całkowitej przy użyciu standardowego ciągu formatu liczbowego "D" z specyfikatorem dokładności. Można dodać zera wiodące zarówno do liczb całkowitych, jak i zmiennoprzecinkowych przy użyciu niestandardowego ciągu formatu liczbowego. W tym artykule pokazano, jak użyć obu metod, aby wypełnić liczbę z wiodącymi zerami.
Aby wypełnić liczbę całkowitą z wiodącymi zerami do określonej długości
Określ minimalną liczbę cyfr, które mają być wyświetlane dla wartości całkowitej. Uwzględnij wszystkie cyfry wiodące w tej liczbie.
Określ, czy chcesz wyświetlić liczbę całkowitą jako wartość dziesiętną, czy szesnastkowa.
Aby wyświetlić liczbę całkowitą jako wartość dziesiętną, wywołaj metodę
ToString(String)
i przekaż ciąg "Dn" jako wartość parametruformat
, gdzie n reprezentuje minimalną długość ciągu.Aby wyświetlić liczbę całkowitą jako wartość szesnastkową, wywołaj metodę
ToString(String)
i przekaż ciąg "Xn" jako wartość parametru formatu, gdzie n reprezentuje minimalną długość ciągu.
Możesz również użyć ciągu formatu w ciągu interpolowanym w językach C# i Visual Basic. Alternatywnie można wywołać metodę, taką jak String.Format lub Console.WriteLine używającą formatowania złożonego.
Poniższy przykład formatuje kilka wartości całkowitych z zerami wiodącymi, aby łączna długość sformatowanej liczby wynosi co najmniej osiem znaków.
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
Aby wypełnić liczbę całkowitą z określoną liczbą zer wiodących
Określ liczbę zer wiodących, które mają być wyświetlane dla wartości całkowitej.
Określ, czy chcesz wyświetlić liczbę całkowitą jako wartość dziesiętną, czy szesnastkowa.
Formatowanie go jako wartości dziesiętnej wymaga specyfikatora formatu standardowego "D".
Formatowanie go jako wartości szesnastkowej wymaga specyfikatora formatu standardowego "X".
Określ długość niepaddowanego ciągu liczbowego przez wywołanie metody lub
ToString("X").Length
wartościToString("D").Length
całkowitej.Dodaj do długości niepaddowanego ciągu liczbowego liczbę zer wiodących, które mają być w sformatowanym ciągu. Wynikiem jest łączna długość wyściełanego ciągu.
Wywołaj metodę wartości
ToString(String)
całkowitej i przekaż ciąg "Dn" dla ciągów dziesiętnych i "Xn" dla ciągów szesnastkowych, gdzie n reprezentuje łączną długość ciągu dopełnionego. Można również użyć ciągu formatu "Dn" lub "Xn" w metodzie obsługującej formatowanie złożone.
Poniższy przykład zawiera wartość całkowitą z pięcioma wiodącymi zerami:
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
Aby wypełnić wartość liczbową z wiodącymi zerami do określonej długości
Określ, ile cyfr z lewej strony dziesiętnej ma mieć reprezentacja ciągu liczby. Uwzględnij wszystkie zera wiodące w tej całkowitej liczbie cyfr.
Zdefiniuj niestandardowy ciąg formatu liczbowego, który używa symbolu zastępczego zero ("0") do reprezentowania minimalnej liczby zer.
Wywołaj metodę numeru
ToString(String)
i przekaż go do ciągu formatu niestandardowego. Można również użyć niestandardowego ciągu formatu z interpolacją ciągów lub metodą, która obsługuje formatowanie złożone.
Poniższy przykład formatuje kilka wartości liczbowych z wiodącymi zerami. W związku z tym łączna długość sformatowanej liczby wynosi co najmniej osiem cyfr z lewej strony dziesiętnej.
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
Aby wypełnić wartość liczbową z określoną liczbą zer wiodących
Określ, ile zer wiodących ma zawierać wartość liczbowa.
Określ liczbę cyfr z lewej strony dziesiętnej w ciągu liczbowym bez ściągniętym:
Ustal, czy reprezentacja ciągu liczby zawiera symbol separatora dziesiętnego.
Jeśli zawiera symbol separatora dziesiętnego, określ liczbę znaków z lewej strony punktu dziesiętnego. Jeśli nie zawiera symbolu punktu dziesiętnego, określ długość ciągu.
Utwórz niestandardowy ciąg formatu, który używa:
Symbol zastępczy zero ("0") dla każdego z zer wiodących do wyświetlenia w ciągu.
Symbol zastępczy zero lub symbol zastępczy cyfry "#" reprezentujący każdą cyfrę w ciągu domyślnym.
Podaj ciąg formatu niestandardowego jako parametr do metody number
ToString(String)
lub metody obsługującej formatowanie złożone.
Poniższy przykład zawiera dwie Double wartości z pięcioma wiodącymi zerami:
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