Standaardtekenreeksen voor numerieke notatie
Standaardtekenreeksen voor numerieke notatie worden gebruikt om algemene numerieke typen op te maken. Een standaardtekenreeks voor numerieke notatie heeft de volgende notatie [format specifier][precision specifier]
:
De notatieaanduiding is één alfabetisch teken dat het type getalnotatie aangeeft, bijvoorbeeld valuta of percentage. Elke tekenreeks met numerieke notatie die meer dan één alfabetisch teken bevat, inclusief witruimte, wordt geïnterpreteerd als een aangepaste tekenreeks voor numerieke notatie. Zie Tekenreeksen met een aangepaste numerieke notatievoor meer informatie.
Precisieaanduiding is een optioneel geheel getal dat van invloed is op het aantal cijfers in de resulterende tekenreeks. In .NET 7 en latere versies is de maximale precisiewaarde 999.999.999. In .NET 6 is de maximale precisiewaarde Int32.MaxValue. In eerdere .NET-versies kan de precisie variëren van 0 tot 99. De precisieaanduiding bepaalt het aantal cijfers in de tekenreeksweergave van een getal. Het getal zelf wordt niet afgerond. Als u een afrondingsbewerking wilt uitvoeren, gebruikt u de methode Math.Ceiling, Math.Floorof Math.Round.
Wanneer precisieaanduiding het aantal fractionele cijfers in de resultaattekenreeks bepaalt, weerspiegelt de resultaattekenreeks een getal dat wordt afgerond op een vertegenwoordigbaar resultaat dat het dichtst bij het oneindig nauwkeurige resultaat ligt. Als er twee even bijna vertegenwoordigbare resultaten zijn:
- Op .NET Framework en .NET Core tot .NET Core 2.0, selecteert de runtime het resultaat met het kleinste significante cijfer (dat wil gezegd, met behulp van MidpointRounding.AwayFromZero).
- op .NET Core 2.1 en hoger, selecteert de runtime het resultaat met een even aanzienlijk cijfer (dat wil gezegd, met behulp van MidpointRounding.ToEven).
Notitie
De precisieaanduiding bepaalt het aantal cijfers in de resultaattekenreeks. Als u een resultaattekenreeks met voorloop- of volgspaties wilt opmaken, gebruikt u de functie samengestelde opmaak en definieert u een uitlijningsonderdeel in het opmaakitem.
Standaardtekenreeksen voor numerieke notatie worden ondersteund door:
Sommige overbelastingen van de
ToString
methode van alle numerieke typen. U kunt bijvoorbeeld een tekenreeks voor een numerieke notatie opgeven voor de Int32.ToString(String) en Int32.ToString(String, IFormatProvider) methoden.De
TryFormat
methode van alle numerieke typen, bijvoorbeeld Int32.TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) en Single.TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider).De .NET samengestelde opmaakfunctie, die wordt gebruikt door een aantal methoden
Write
enWriteLine
van de klassen Console en StreamWriter, de methode String.Format en de methode StringBuilder.AppendFormat. Met de functie samengestelde indeling kunt u de tekenreeksweergave van meerdere gegevensitems in één tekenreeks opnemen, de veldbreedte opgeven en getallen in een veld uitlijnen. Zie Samengestelde opmaakvoor meer informatie.geïnterpoleerde tekenreeksen in C# en Visual Basic, die een vereenvoudigde syntaxis bieden in vergelijking met samengestelde notatietekenreeksen.
Hint
U kunt het Hulpprogramma voor opmaak downloaden, een .NET Core Windows Forms-toepassing waarmee u notatietekenreeksen kunt toepassen op numerieke of datum- en tijdwaarden en de resultaattekenreeks wordt weergegeven. Broncode is beschikbaar voor C#- en Visual Basic-.
Standaardnotatieaanduidingen
In de volgende tabel worden de standaardaanduidingen voor numerieke notaties beschreven en worden voorbeelduitvoer weergegeven die door elke indelingsaanduiding wordt geproduceerd. Zie de sectie Notities voor meer informatie over het gebruik van standaardtekenreeksen voor numerieke notatie en het codevoorbeeld sectie voor een uitgebreide illustratie van het gebruik ervan.
Het resultaat van een opgemaakte tekenreeks voor een specifieke cultuur kan afwijken van de volgende voorbeelden. Instellingen voor besturingssystemen, gebruikersinstellingen, omgevingsvariabelen en de .NET-versie die u gebruikt, kunnen allemaal van invloed zijn op de indeling. Vanaf .NET 5 probeert .NET bijvoorbeeld culturele indelingen op verschillende platforms te samenvoegen. Zie .NET-globalisatie en ICU-voor meer informatie.
Opmaakaanduiding | Naam | Beschrijving | Voorbeelden |
---|---|---|---|
"B" of "b" | Binaire | Resultaat: een binaire tekenreeks. Ondersteund door: Alleen integrale typen (.NET 8+). Precisieaanduiding: Aantal cijfers in de resultaattekenreeks. Meer informatie: The Binary ("B") Format Specifier. |
42 ("B") -> 101010 255 ("b16") -> 0000000011111111 |
"C" of "c" | Valuta | Resultaat: Een valutawaarde. Ondersteund door: Alle numerieke typen. Precisieaanduiding: Aantal decimalen. Standaardprecisieaanduiding: gedefinieerd door NumberFormatInfo.CurrencyDecimalDigits. Meer informatie: De valutanotatie ("C") Specifier. |
123.456 ("C", en-US) -> \$123,46 123.456 ("C", fr-FR) -> 123,46 € 123.456 ("C", ja-JP) -> {123) -123.456 ("C3", en-US) -> (\$123,456) -123.456 ("C3", fr-FR) -> -123,456 € -123.456 ("C3", ja-JP) -> -**123.456 |
"D" of "d" | Decimaal | Resultaat: Gehele getallen met optioneel negatief teken. Alleen ondersteund door: Integrale typen. Precisieaanduiding: Minimumaantal cijfers. Standaardprecisieaanduiding: Minimaal aantal cijfers vereist. Meer informatie: De decimaal("D") Notatieaanduiding. |
1234 ("D") -> 1234 -1234 ("D6") -> -001234 |
"E" of "e" | Exponentieel (wetenschappelijk) | Resultaat: Exponentiële notatie. Ondersteund door: Alle numerieke typen. Precisieaanduiding: Aantal decimalen. Standaardprecisieaanduiding: 6. Meer informatie: De Exponentiële notatieaanduiding (E). |
1052.0329112756 ("E", en-US) -> 1.052033E+003 1052.0329112756 ("e", fr-FR) -> 1.052033e+003 -1052.0329112756 ("e2", en-US) -> -1,05e+003 -1052.0329112756 ("E2", fr-FR) -> -1.05E+003 |
"F" of "f" | Vast punt | Resultaat: Integrale en decimale cijfers met optioneel negatief teken. Ondersteund door: Alle numerieke typen. Precisieaanduiding: Aantal decimalen. Standaardprecisieaanduiding: gedefinieerd door NumberFormatInfo.NumberDecimalDigits. Meer informatie: De Specifier van de vaste puntnotatie ('F'). |
1234.567 ("F", en-US) -> 1234.57 1234.567 ("F", de-DE) -> 1234,57 1234 ("F1", en-US) -> 1234.0 1234 ("F1", de-DE) -> 1234,0 -1234.56 ("F4", en-US) -> -1234.5600 -1234.56 ("F4", de-DE) -> -1234.5600 |
"G" of "g" | Algemeen | Resultaat: Hoe compacter de vaste punt- of wetenschappelijke notatie. Ondersteund door: Alle numerieke typen. Precisieaanduiding: Aantal significante cijfers. Standaardprecisieaanduiding: afhankelijk van numeriek type. Meer informatie: De algemene notatieaanduiding (G). |
-123.456 ("G", en-US) -> -123.456 -123.456 ("G", sv-SE) -> -123.456 123.4546 ("G4", en-US) -> 123.5 123.4546 ("G4", sv-SE) -> 123,5 -1.234567890e-25 ("G", en-US) -> -1.23456789E-25 -1.234567890e-25 ("G", sv-SE) -> -1.23456789E-25 |
"N" of "n" | Aantal | Resultaat: Integrale en decimale cijfers, groepsscheidingstekens en een decimaalteken met optioneel negatief teken. Ondersteund door: Alle numerieke typen. Precisieaanduiding: Gewenst aantal decimalen. Standaardprecisieaanduiding: gedefinieerd door NumberFormatInfo.NumberDecimalDigits. Meer informatie: De numerieke notatieaanduiding (N). |
1234.567 ("N", en-US) -> 1.234.57 1234.567 ("N", ru-RU) -> 1 234,57 1234 ("N1", en-US) -> 1.234.0 1234 ("N1", ru-RU) -> 1 234,0 -1234.56 ("N3", en-US) -> -1.234.560 -1234,56 ("N3", ru-RU) -> -1 234.560 |
"P" of "p" | Procent | Resultaat: getal vermenigvuldigd met 100 en weergegeven met een procentsymbool. Ondersteund door: Alle numerieke typen. Precisieaanduiding: Gewenst aantal decimalen. Standaardprecisieaanduiding: gedefinieerd door NumberFormatInfo.PercentDecimalDigits. Meer informatie: The Percent ("P") Format Specifier. |
1 ("P", en-US) -> 100,00 % 1 ("P", fr-FR) -> 100,00 % -0.39678 ("P1", en-US) -> -39,7 % -0.39678 ("P1", fr-FR) -> -39,7 % |
"R" of "r" | Round-trip | Resultaat: Een tekenreeks die een retour naar een identiek getal kan afronden. Ondersteund door: Single, Doubleen BigInteger. Opmerking: Aanbevolen voor het BigInteger type. Gebruik G17 voor Double typen; gebruik G9 voor Single typen. Precisieaanduiding: genegeerd. Meer informatie: The Round-trip ("R") Format Specifier. |
123456789.12345678 ("R") -> 123456789.12345678 -1234567890.12345678 ("R") -> -1234567890.1234567 |
"X" of "x" | Hexadecimaal | Resultaat: een hexadecimale tekenreeks. Alleen ondersteund door: Integrale typen. Precisieaanduiding: Aantal cijfers in de resultaattekenreeks. Meer informatie: De Hexadecimale ("X") Format Specifier. |
255 ("X") -> FF -1 ("x") -> ff 255 ("x4") -> 00ff -1 ("X4") -> 00FF |
Elk ander teken met één teken | Onbekende aanduiding | Resultaat: genereert een FormatException tijdens runtime. |
Standaardtekenreeksen voor numerieke notatie gebruiken
Notitie
De C#-voorbeelden in dit artikel worden uitgevoerd in de Try.NET inline code-runner en speelomgeving. Selecteer de knop uitvoeren om een voorbeeld uit te voeren in een interactief venster. Zodra u de code hebt uitgevoerd, kunt u deze wijzigen en de gewijzigde code uitvoeren door opnieuw uit te voeren. De gewijzigde code wordt uitgevoerd in het interactieve venster of, als de compilatie mislukt, worden alle C#-compilerfoutberichten weergegeven.
Een standaardtekenreeks voor numerieke notatie kan worden gebruikt om de opmaak van een numerieke waarde op een van de volgende manieren te definiëren:
Het kan worden doorgegeven aan de
TryFormat
methode of een overbelasting van deToString
methode met eenformat
parameter. In het volgende voorbeeld wordt een numerieke waarde opgemaakt als een valutatekenreeks in de huidige cultuur (in dit geval de en-US-cultuur).Decimal value = static_cast<Decimal>(123.456); Console::WriteLine(value.ToString("C2")); // Displays $123.46
decimal value = 123.456m; Console.WriteLine(value.ToString("C2")); // Displays $123.46
Dim value As Decimal = 123.456d Console.WriteLine(value.ToString("C2")) ' Displays $123.46
Het kan worden opgegeven als het argument
formatString
in een indelingsitem dat wordt gebruikt met methoden zoals String.Format, Console.WriteLineen StringBuilder.AppendFormat. Zie Samengestelde opmaakvoor meer informatie. In het volgende voorbeeld wordt een notatie-item gebruikt om een valutawaarde in te voegen in een tekenreeks.Decimal value = static_cast<Decimal>(123.456); Console::WriteLine("Your account balance is {0:C2}.", value); // Displays "Your account balance is $123.46."
decimal value = 123.456m; Console.WriteLine($"Your account balance is {value:C2}."); // Displays "Your account balance is $123.46."
Dim value As Decimal = 123.456d Console.WriteLine("Your account balance is {0:C2}.", value) ' Displays "Your account balance is $123.46."
U kunt desgewenst een
alignment
argument opgeven om de breedte van het numerieke veld op te geven en of de waarde rechts of links is uitgelijnd. In het volgende voorbeeld wordt een valutawaarde in een veld van 28 tekens links uitgelijnd en wordt een valutawaarde rechts uitgelijnd in een veld van 14 tekens.array<Decimal>^ amounts = { static_cast<Decimal>(16305.32), static_cast<Decimal>(18794.16) }; Console::WriteLine(" Beginning Balance Ending Balance"); Console::WriteLine(" {0,-28:C2}{1,14:C2}", amounts[0], amounts[1]); // Displays: // Beginning Balance Ending Balance // $16,305.32 $18,794.16
decimal[] amounts = { 16305.32m, 18794.16m }; Console.WriteLine(" Beginning Balance Ending Balance"); Console.WriteLine(" {0,-28:C2}{1,14:C2}", amounts[0], amounts[1]); // Displays: // Beginning Balance Ending Balance // $16,305.32 $18,794.16
Dim amounts() As Decimal = {16305.32d, 18794.16d} Console.WriteLine(" Beginning Balance Ending Balance") Console.WriteLine(" {0,-28:C2}{1,14:C2}", amounts(0), amounts(1)) ' Displays: ' Beginning Balance Ending Balance ' $16,305.32 $18,794.16
Het kan worden opgegeven als het argument
formatString
in een geïnterpoleerd expressie-item van een geïnterpoleerde tekenreeks. Zie het artikel Tekenreeksinterpolatie artikel in de C#-verwijzing of het geïnterpoleerde tekenreeksen artikel in de Visual Basic-verwijzing voor meer informatie.
De volgende secties bevatten gedetailleerde informatie over elk van de standaardtekenreeksen voor numerieke notatie.
Aanduiding voor binaire indeling (B)
De binaire notatieaanduiding ('B') converteert een getal naar een tekenreeks met binaire cijfers. Deze indeling wordt alleen ondersteund voor integrale typen en alleen op .NET 8+.
De precisieaanduiding geeft het minimale aantal cijfers aan dat in de resulterende tekenreeks is gewenst. Indien nodig wordt het getal opgevuld met nullen links om het aantal cijfers te produceren dat wordt opgegeven door de precisieaanduiding.
De resultaattekenreeks wordt niet beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object.
Valutanotatieaanduiding (C)
De notatieaanduiding 'C' (of valuta) converteert een getal naar een tekenreeks die een valutabedrag vertegenwoordigt. De precisieaanduiding geeft het gewenste aantal decimalen in de resultaattekenreeks aan. Als de precisieaanduiding wordt weggelaten, wordt de standaardprecisie gedefinieerd door de eigenschap NumberFormatInfo.CurrencyDecimalDigits.
Als de waarde die moet worden opgemaakt meer dan het opgegeven of standaardaantal decimalen heeft, wordt de breukwaarde afgerond in de resultaattekenreeks. Als de waarde rechts van het opgegeven aantal decimalen 5 of hoger is, wordt het laatste cijfer in de resultaattekenreeks afgerond van nul.
De resultaattekenreeks wordt beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object. De volgende tabel bevat de NumberFormatInfo eigenschappen waarmee de opmaak van de geretourneerde tekenreeks wordt beheerd.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
CurrencyPositivePattern | Hiermee definieert u de plaatsing van het valutasymbool voor positieve waarden. |
CurrencyNegativePattern | Definieert de plaatsing van het valutasymbool voor negatieve waarden en geeft aan of het negatieve teken wordt vertegenwoordigd door haakjes of de eigenschap NegativeSign. |
NegativeSign | Definieert het negatieve teken dat wordt gebruikt als CurrencyNegativePattern aangeeft dat er geen haakjes worden gebruikt. |
CurrencySymbol | Hiermee definieert u het valutasymbool. |
CurrencyDecimalDigits | Hiermee definieert u het standaardaantal decimale cijfers in een valutawaarde. Deze waarde kan worden overschreven met behulp van de precisieaanduiding. |
CurrencyDecimalSeparator | Hiermee definieert u de tekenreeks die integrale en decimale cijfers scheidt. |
CurrencyGroupSeparator | Hiermee definieert u de tekenreeks die groepen van integrale getallen scheidt. |
CurrencyGroupSizes | Hiermee definieert u het aantal gehele getallen dat in een groep wordt weergegeven. |
In het volgende voorbeeld wordt een Double waarde opgemaakt met de valutanotatieaanduiding:
double value = 12345.6789;
Console::WriteLine(value.ToString("C", CultureInfo::CurrentCulture));
Console::WriteLine(value.ToString("C3", CultureInfo::CurrentCulture));
Console::WriteLine(value.ToString("C3",
CultureInfo::CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
// $12,345.68
// $12,345.679
// kr 12.345,679
double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));
Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));
Console.WriteLine(value.ToString("C3",
CultureInfo.CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
// $12,345.68
// $12,345.679
// 12.345,679 kr
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture))
Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture))
Console.WriteLine(value.ToString("C3", _
CultureInfo.CreateSpecificCulture("da-DK")))
' The example displays the following output on a system whose
' current culture is English (United States):
' $12,345.68
' $12,345.679
' kr 12.345,679
Decimaalnotatieaanduiding (D)
De notatieaanduiding D (of decimaal) converteert een getal naar een tekenreeks met decimale cijfers (0-9), voorafgegaan door een minteken als het getal negatief is. Deze indeling wordt alleen ondersteund voor integrale typen.
De precisieaanduiding geeft het minimale aantal cijfers aan dat in de resulterende tekenreeks is gewenst. Indien nodig wordt het getal opgevuld met nullen links om het aantal cijfers te produceren dat wordt opgegeven door de precisieaanduiding. Als er geen precisieaanduiding is opgegeven, is de standaardwaarde de minimumwaarde die nodig is om het gehele getal weer te geven zonder voorloopnullen.
De resultaattekenreeks wordt beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object. Zoals in de volgende tabel wordt weergegeven, is één eigenschap van invloed op de opmaak van de resultaattekenreeks.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
NegativeSign | Definieert de tekenreeks die aangeeft dat een getal negatief is. |
In het volgende voorbeeld wordt een Int32 waarde opgemaakt met de aanduiding voor de decimale notatie.
int value;
value = 12345;
Console::WriteLine(value.ToString("D"));
// Displays 12345
Console::WriteLine(value.ToString("D8"));
// Displays 00012345
value = -12345;
Console::WriteLine(value.ToString("D"));
// Displays -12345
Console::WriteLine(value.ToString("D8"));
// Displays -00012345
int value;
value = 12345;
Console.WriteLine(value.ToString("D"));
// Displays 12345
Console.WriteLine(value.ToString("D8"));
// Displays 00012345
value = -12345;
Console.WriteLine(value.ToString("D"));
// Displays -12345
Console.WriteLine(value.ToString("D8"));
// Displays -00012345
Dim value As Integer
value = 12345
Console.WriteLine(value.ToString("D"))
' Displays 12345
Console.WriteLine(value.ToString("D8"))
' Displays 00012345
value = -12345
Console.WriteLine(value.ToString("D"))
' Displays -12345
Console.WriteLine(value.ToString("D8"))
' Displays -00012345
Exponentiële notatieaanduiding (E)
De exponentiële notatieaanduiding ('E') converteert een getal naar een tekenreeks van het formulier '-d.ddd... E+ddd' of '-d.ddd... e+ddd', waarbij elke 'd' een cijfer aangeeft (0-9). De tekenreeks begint met een minteken als het getal negatief is. Precies één cijfer wordt altijd voorafgegaan door het decimaalteken.
De precisieaanduiding geeft het gewenste aantal cijfers na het decimaalteken aan. Als de precisieaanduiding wordt weggelaten, wordt een standaardwaarde van zes cijfers na het decimaalteken gebruikt.
In het geval van de notatieaanduiding wordt aangegeven of de exponent moet worden voorafgegaan door een "E" of een "e". De exponent bestaat altijd uit een plus- of minteken en minimaal drie cijfers. De exponent wordt zo nodig opgevuld met nullen om aan dit minimum te voldoen.
De resultaattekenreeks wordt beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object. De volgende tabel bevat de NumberFormatInfo eigenschappen waarmee de opmaak van de geretourneerde tekenreeks wordt beheerd.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
NegativeSign | Definieert de tekenreeks die aangeeft dat een getal negatief is voor zowel de coëfficiënt als de exponent. |
NumberDecimalSeparator | Definieert de tekenreeks die het integrale cijfer scheidt van decimale cijfers in de coëfficiënt. |
PositiveSign | Definieert de tekenreeks die aangeeft dat een exponent positief is. |
In het volgende voorbeeld wordt een Double-waarde opgemaakt met de exponentiële notatieaanduiding:
double value = 12345.6789;
Console::WriteLine(value.ToString("E", CultureInfo::InvariantCulture));
// Displays 1.234568E+004
Console::WriteLine(value.ToString("E10", CultureInfo::InvariantCulture));
// Displays 1.2345678900E+004
Console::WriteLine(value.ToString("e4", CultureInfo::InvariantCulture));
// Displays 1.2346e+004
Console::WriteLine(value.ToString("E",
CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004
double value = 12345.6789;
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture));
// Displays 1.234568E+004
Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture));
// Displays 1.2345678900E+004
Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture));
// Displays 1.2346e+004
Console.WriteLine(value.ToString("E",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture))
' Displays 1.234568E+004
Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture))
' Displays 1.2345678900E+004
Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture))
' Displays 1.2346e+004
Console.WriteLine(value.ToString("E", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 1,234568E+004
Indelingsaanduiding met vaste punten (F)
De notatieaanduiding voor vast punt ('F') converteert een getal naar een tekenreeks van het formulier '-ddd.ddd...' waarbij elke 'd' een cijfer aangeeft (0-9). De tekenreeks begint met een minteken als het getal negatief is.
De precisieaanduiding geeft het gewenste aantal decimalen aan. Als de precisieaanduiding wordt weggelaten, levert de huidige eigenschap NumberFormatInfo.NumberDecimalDigits de numerieke precisie.
De resultaattekenreeks wordt beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object. De volgende tabel bevat de eigenschappen van het NumberFormatInfo-object waarmee de opmaak van de resultaattekenreeks wordt beheerd.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
NegativeSign | Definieert de tekenreeks die aangeeft dat een getal negatief is. |
NumberDecimalSeparator | Hiermee definieert u de tekenreeks die integrale cijfers van decimalen scheidt. |
NumberDecimalDigits | Hiermee definieert u het standaardaantal decimalen. Deze waarde kan worden overschreven met behulp van de precisieaanduiding. |
In het volgende voorbeeld wordt een Double en een Int32-waarde opgemaakt met de notatieaanduiding voor vaste punten:
int integerNumber;
integerNumber = 17843;
Console::WriteLine(integerNumber.ToString("F",
CultureInfo::InvariantCulture));
// Displays 17843.00
integerNumber = -29541;
Console::WriteLine(integerNumber.ToString("F3",
CultureInfo::InvariantCulture));
// Displays -29541.000
double doubleNumber;
doubleNumber = 18934.1879;
Console::WriteLine(doubleNumber.ToString("F", CultureInfo::InvariantCulture));
// Displays 18934.19
Console::WriteLine(doubleNumber.ToString("F0", CultureInfo::InvariantCulture));
// Displays 18934
doubleNumber = -1898300.1987;
Console::WriteLine(doubleNumber.ToString("F1", CultureInfo::InvariantCulture));
// Displays -1898300.2
Console::WriteLine(doubleNumber.ToString("F3",
CultureInfo::CreateSpecificCulture("es-ES")));
// Displays -1898300,199
int integerNumber;
integerNumber = 17843;
Console.WriteLine(integerNumber.ToString("F",
CultureInfo.InvariantCulture));
// Displays 17843.00
integerNumber = -29541;
Console.WriteLine(integerNumber.ToString("F3",
CultureInfo.InvariantCulture));
// Displays -29541.000
double doubleNumber;
doubleNumber = 18934.1879;
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture));
// Displays 18934.19
Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture));
// Displays 18934
doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture));
// Displays -1898300.2
Console.WriteLine(doubleNumber.ToString("F3",
CultureInfo.CreateSpecificCulture("es-ES")));
// Displays -1898300,199
Dim integerNumber As Integer
integerNumber = 17843
Console.WriteLine(integerNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 17843.00
integerNumber = -29541
Console.WriteLine(integerNumber.ToString("F3", CultureInfo.InvariantCulture))
' Displays -29541.000
Dim doubleNumber As Double
doubleNumber = 18934.1879
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 18934.19
Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture))
' Displays 18934
doubleNumber = -1898300.1987
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture))
' Displays -1898300.2
Console.WriteLine(doubleNumber.ToString("F3", _
CultureInfo.CreateSpecificCulture("es-ES")))
' Displays -1898300,199
Algemene notatieaanduiding (G)
De algemene notatieaanduiding ('G') converteert een getal naar de compactere notatie van vaste punten of wetenschappelijke notatie, afhankelijk van het type getal en of een precisieaanduiding aanwezig is. De precisieaanduiding definieert het maximum aantal significante cijfers dat in de resultaattekenreeks kan worden weergegeven. Als de precisieaanduiding wordt weggelaten of nul, bepaalt het type getal de standaardprecisie, zoals aangegeven in de volgende tabel.
Numeriek type | Standaardprecisie |
---|---|
Byte of SByte | 3 cijfers |
Int16 of UInt16 | 5 cijfers |
Int32 of UInt32 | 10 cijfers |
Int64 | 19 cijfers |
UInt64 | 20 cijfers |
BigInteger | Onbeperkt (hetzelfde als "R") |
Half | Kleinste retourneerbaar aantal cijfers dat het getal aangeeft |
Single | Het kleinste retourneerbaar aantal cijfers dat het getal aangeeft (in .NET Framework is G7 de standaardinstelling) |
Double | Het kleinste retourneerbaar aantal cijfers dat het getal aangeeft (in .NET Framework is G15 de standaardinstelling) |
Decimal | Kleinste retourneerbaar aantal cijfers dat het getal aangeeft |
Notatie met vaste punten wordt gebruikt als de exponent die zou voortvloeien uit het uitdrukken van het getal in de wetenschappelijke notatie groter is dan -5 en kleiner is dan de precisieaanduiding; anders wordt wetenschappelijke notatie gebruikt. Het resultaat bevat indien nodig een decimaalteken en volgnullen na het decimaalteken worden weggelaten. Als de precisieaanduiding aanwezig is en het aantal significante cijfers in het resultaat de opgegeven precisie overschrijdt, worden de overtollige volgcijfers verwijderd door af te ronden.
Als het getal echter een Decimal getal is en de precisieaanduiding wordt weggelaten, wordt de notatie met vaste punten altijd gebruikt en blijven volgnullen behouden.
Als wetenschappelijke notatie wordt gebruikt, wordt de exponent in het resultaat voorafgegaan door 'E' als de notatieaanduiding 'G' of 'e' is als de notatieaanduiding 'g' is. De exponent bevat minimaal twee cijfers. Dit verschilt van de notatie voor wetenschappelijke notatie die wordt geproduceerd door de exponentiële notatieaanduiding, die minimaal drie cijfers in de exponent bevat.
Wanneer deze wordt gebruikt met een Double-waarde, zorgt de notatieaanduiding 'G17' ervoor dat de oorspronkelijke Double waarde retourneert. Dit komt doordat Double een IEEE 754-2008-compatibele dubbele precisie (binary64
) drijvendekommagetal is dat maximaal 17 significante cijfers precisie geeft. In .NET Framework raden we het gebruik ervan aan in plaats van de 'R'-indelingsaanduiding, omdat in sommige gevallen 'R' dubbele precisie zwevende kommawaarden niet kan afronden.
Wanneer deze wordt gebruikt met een Single waarde, zorgt de notatieaanduiding 'G9' ervoor dat de oorspronkelijke Single waarde retourneert. Dit komt doordat Single een IEEE 754-2008-compatibele single-precision (binary32
) drijvendekommagetal is dat maximaal negen significante cijfers precisie geeft. Om prestatieredenen raden we het gebruik ervan aan in plaats van de 'R'-indelingsaanduiding.
De resultaattekenreeks wordt beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object. De volgende tabel bevat de NumberFormatInfo eigenschappen waarmee de opmaak van de resultaattekenreeks wordt beheerd.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
NegativeSign | Definieert de tekenreeks die aangeeft dat een getal negatief is. |
NumberDecimalSeparator | Hiermee definieert u de tekenreeks die integrale cijfers van decimalen scheidt. |
PositiveSign | Definieert de tekenreeks die aangeeft dat een exponent positief is. |
In het volgende voorbeeld worden gesorteerde waarden voor drijvende komma opgemaakt met de algemene notatieaanduiding:
double number;
number = 12345.6789;
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays 12345.6789
Console::WriteLine(number.ToString("G",
CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 12345,6789
Console::WriteLine(number.ToString("G7", CultureInfo::InvariantCulture));
// Displays 12345.68
number = .0000023;
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays 2.3E-06
Console::WriteLine(number.ToString("G",
CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06
number = .0023;
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays 0.0023
number = 1234;
Console::WriteLine(number.ToString("G2", CultureInfo::InvariantCulture));
// Displays 1.2E+03
number = Math::PI;
Console::WriteLine(number.ToString("G5", CultureInfo::InvariantCulture));
// Displays 3.1416
double number;
number = 12345.6789;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 12345.6789
Console.WriteLine(number.ToString("G",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 12345,6789
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture));
// Displays 12345.68
number = .0000023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 2.3E-06
Console.WriteLine(number.ToString("G",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06
number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 0.0023
number = 1234;
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture));
// Displays 1.2E+03
number = Math.PI;
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture));
// Displays 3.1416
Dim number As Double
number = 12345.6789
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 12345.6789
Console.WriteLine(number.ToString("G", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 12345,6789
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture))
' Displays 12345.68
number = .0000023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 2.3E-06
Console.WriteLine(number.ToString("G", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 2,3E-06
number = .0023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 0.0023
number = 1234
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture))
' Displays 1.2E+03
number = Math.Pi
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture))
' Displays 3.1416
Numerieke notatieaanduiding (N)
De notatieaanduiding ('N') converteert een getal naar een tekenreeks van het formulier '-d,ddd,ddd.ddd...', waarbij '-' indien nodig een negatief getalsymbool aangeeft, 'd' geeft een cijfer aan (0-9), ',' geeft een groepsscheidingsteken aan en '.' geeft een decimaalteken aan. De precisieaanduiding geeft het gewenste aantal cijfers na het decimaalteken aan. Als de precisieaanduiding wordt weggelaten, wordt het aantal decimalen gedefinieerd door de huidige eigenschap NumberFormatInfo.NumberDecimalDigits.
De resultaattekenreeks wordt beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object. De volgende tabel bevat de NumberFormatInfo eigenschappen waarmee de opmaak van de resultaattekenreeks wordt beheerd.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
NegativeSign | Definieert de tekenreeks die aangeeft dat een getal negatief is. |
NumberNegativePattern | Definieert de notatie van negatieve waarden en geeft aan of het negatieve teken wordt vertegenwoordigd door haakjes of de eigenschap NegativeSign. |
NumberGroupSizes | Hiermee definieert u het aantal integrale cijfers dat tussen groepsscheidingstekens wordt weergegeven. |
NumberGroupSeparator | Hiermee definieert u de tekenreeks die groepen van integrale getallen scheidt. |
NumberDecimalSeparator | Hiermee definieert u de tekenreeks die integrale en decimale cijfers scheidt. |
NumberDecimalDigits | Hiermee definieert u het standaardaantal decimalen. Deze waarde kan worden overschreven met behulp van een precisieaanduiding. |
In het volgende voorbeeld worden gesorteerde waarden voor drijvende komma opgemaakt met de getalnotatieaanduiding:
double dblValue = -12445.6789;
Console::WriteLine(dblValue.ToString("N", CultureInfo::InvariantCulture));
// Displays -12,445.68
Console::WriteLine(dblValue.ToString("N1",
CultureInfo::CreateSpecificCulture("sv-SE")));
// Displays -12 445,7
int intValue = 123456789;
Console::WriteLine(intValue.ToString("N1", CultureInfo::InvariantCulture));
// Displays 123,456,789.0
double dblValue = -12445.6789;
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture));
// Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1",
CultureInfo.CreateSpecificCulture("sv-SE")));
// Displays -12 445,7
int intValue = 123456789;
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
// Displays 123,456,789.0
Dim dblValue As Double = -12445.6789
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture))
' Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", _
CultureInfo.CreateSpecificCulture("sv-SE")))
' Displays -12 445,7
Dim intValue As Integer = 123456789
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture))
' Displays 123,456,789.0
Aanduiding voor procentnotatie (P)
De notatieaanduiding percentage ('P') vermenigvuldigt een getal met 100 en converteert deze naar een tekenreeks die een percentage vertegenwoordigt. De precisieaanduiding geeft het gewenste aantal decimalen aan. Als de precisieaanduiding wordt weggelaten, wordt de standaard numerieke precisie gebruikt die wordt opgegeven door de huidige eigenschap PercentDecimalDigits.
De volgende tabel bevat de NumberFormatInfo eigenschappen waarmee de opmaak van de geretourneerde tekenreeks wordt beheerd.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
PercentPositivePattern | Hiermee definieert u de plaatsing van het procentsymbool voor positieve waarden. |
PercentNegativePattern | Hiermee definieert u de plaatsing van het procentsymbool en het negatieve symbool voor negatieve waarden. |
NegativeSign | Definieert de tekenreeks die aangeeft dat een getal negatief is. |
PercentSymbol | Hiermee definieert u het procentteken. |
PercentDecimalDigits | Hiermee definieert u het standaardaantal decimalen in een percentagewaarde. Deze waarde kan worden overschreven met behulp van de precisieaanduiding. |
PercentDecimalSeparator | Hiermee definieert u de tekenreeks die integrale en decimale cijfers scheidt. |
PercentGroupSeparator | Hiermee definieert u de tekenreeks die groepen van integrale getallen scheidt. |
PercentGroupSizes | Hiermee definieert u het aantal gehele getallen dat in een groep wordt weergegeven. |
In het volgende voorbeeld worden waarden voor drijvende komma opgemaakt met de aanduiding voor procentnotatie:
double number = .2468013;
Console::WriteLine(number.ToString("P", CultureInfo::InvariantCulture));
// Displays 24.68 %
Console::WriteLine(number.ToString("P",
CultureInfo::CreateSpecificCulture("hr-HR")));
// Displays 24,68%
Console::WriteLine(number.ToString("P1", CultureInfo::InvariantCulture));
// Displays 24.7 %
double number = .2468013;
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture));
// Displays 24.68 %
Console.WriteLine(number.ToString("P",
CultureInfo.CreateSpecificCulture("hr-HR")));
// Displays 24,68%
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture));
// Displays 24.7 %
Dim number As Double = .2468013
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture))
' Displays 24.68 %
Console.WriteLine(number.ToString("P", _
CultureInfo.CreateSpecificCulture("hr-HR")))
' Displays 24,68%
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture))
' Displays 24.7 %
Aanduiding voor retourritindeling (R)
De notatieaanduiding ('R') probeert ervoor te zorgen dat een numerieke waarde die naar een tekenreeks wordt geconverteerd, weer wordt geparseerd in dezelfde numerieke waarde. Deze indeling wordt alleen ondersteund voor de typen Half, Single, Doubleen BigInteger.
In .NET Framework en in .NET Core-versies ouder dan 3.0 kan de aanduiding voor de indeling R in sommige gevallen niet worden afgerond Double waarden. Voor zowel Double als Single waarden biedt de indelingsaanduiding R relatief slechte prestaties. In plaats daarvan raden we u aan de 'G17' notatieaanduiding te gebruiken voor Double waarden en de 'G9' notatieaanduiding om Single waarden met succes te afronden.
Wanneer een BigInteger-waarde wordt opgemaakt met behulp van deze aanduiding, bevat de tekenreeksweergave alle significante cijfers in de BigInteger waarde.
Hoewel u een precisieaanduiding kunt opnemen, wordt deze genegeerd. Retouren krijgen voorrang op precisie bij het gebruik van deze aanduiding. De resultaattekenreeks wordt beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object. De volgende tabel bevat de NumberFormatInfo eigenschappen waarmee de opmaak van de resultaattekenreeks wordt beheerd.
Eigenschap NumberFormatInfo | Beschrijving |
---|---|
NegativeSign | Definieert de tekenreeks die aangeeft dat een getal negatief is. |
NumberDecimalSeparator | Hiermee definieert u de tekenreeks die integrale cijfers van decimalen scheidt. |
PositiveSign | Definieert de tekenreeks die aangeeft dat een exponent positief is. |
In het volgende voorbeeld wordt een BigInteger-waarde opgemaakt met de aanduiding voor de retour-reisindeling.
#using <System.Numerics.dll>
using namespace System;
using namespace System::Numerics;
void main()
{
BigInteger value = BigInteger::Pow(Int64::MaxValue, 2);
Console::WriteLine(value.ToString("R"));
}
// The example displays the following output:
// 85070591730234615847396907784232501249
using System;
using System.Numerics;
public class Example
{
public static void Main()
{
var value = BigInteger.Pow(Int64.MaxValue, 2);
Console.WriteLine(value.ToString("R"));
}
}
// The example displays the following output:
// 85070591730234615847396907784232501249
Imports System.Numerics
Module Example
Public Sub Main()
Dim value = BigInteger.Pow(Int64.MaxValue, 2)
Console.WriteLine(value.ToString("R"))
End Sub
End Module
' The example displays the following output:
' 85070591730234615847396907784232501249
Belangrijk
In sommige gevallen worden Double waarden die zijn opgemaakt met de standaardtekenreeks voor numerieke R-notatie, niet voltooid als deze is gecompileerd met behulp van de /platform:x64
- of /platform:anycpu
-switches en worden uitgevoerd op 64-bits systemen. Zie de volgende alinea voor meer informatie.
Als u het probleem wilt omzeilen van Double waarden die zijn opgemaakt met de standaardtekenreeks voor numerieke R-notatie, wordt deze niet afgerond als deze is gecompileerd met behulp van de schakelopties /platform:x64
of /platform:anycpu
en worden uitgevoerd op 64-bits systemen, kunt u Double waarden opmaken met behulp van de standaardtekenreeks voor numerieke notatie G17. In het volgende voorbeeld wordt de tekenreeks 'R'-indeling gebruikt met een Double waarde die niet met succes wordt afgerond, en wordt ook de tekenreeks 'G17' gebruikt om de oorspronkelijke waarde succesvol te afronden:
Console.WriteLine("Attempting to round-trip a Double with 'R':");
double initialValue = 0.6822871999174;
string valueString = initialValue.ToString("R",
CultureInfo.InvariantCulture);
double roundTripped = double.Parse(valueString,
CultureInfo.InvariantCulture);
Console.WriteLine("{0:R} = {1:R}: {2}\n",
initialValue, roundTripped, initialValue.Equals(roundTripped));
Console.WriteLine("Attempting to round-trip a Double with 'G17':");
string valueString17 = initialValue.ToString("G17",
CultureInfo.InvariantCulture);
double roundTripped17 = double.Parse(valueString17,
CultureInfo.InvariantCulture);
Console.WriteLine("{0:R} = {1:R}: {2}\n",
initialValue, roundTripped17, initialValue.Equals(roundTripped17));
// If compiled to an application that targets anycpu or x64 and run on an x64 system,
// the example displays the following output:
// Attempting to round-trip a Double with 'R':
// .NET Framework:
// 0.6822871999174 = 0.68228719991740006: False
// .NET:
// 0.6822871999174 = 0.6822871999174: True
//
// Attempting to round-trip a Double with 'G17':
// 0.6822871999174 = 0.6822871999174: True
Imports System.Globalization
Module Example
Public Sub Main()
Console.WriteLine("Attempting to round-trip a Double with 'R':")
Dim initialValue As Double = 0.6822871999174
Dim valueString As String = initialValue.ToString("R",
CultureInfo.InvariantCulture)
Dim roundTripped As Double = Double.Parse(valueString,
CultureInfo.InvariantCulture)
Console.WriteLine("{0:R} = {1:R}: {2}",
initialValue, roundTripped, initialValue.Equals(roundTripped))
Console.WriteLine()
Console.WriteLine("Attempting to round-trip a Double with 'G17':")
Dim valueString17 As String = initialValue.ToString("G17",
CultureInfo.InvariantCulture)
Dim roundTripped17 As Double = double.Parse(valueString17,
CultureInfo.InvariantCulture)
Console.WriteLine("{0:R} = {1:R}: {2}",
initialValue, roundTripped17, initialValue.Equals(roundTripped17))
End Sub
End Module
' If compiled to an application that targets anycpu or x64 and run on an x64 system,
' the example displays the following output:
' Attempting to round-trip a Double with 'R':
' .NET Framework:
' 0.6822871999174 = 0.68228719991740006: False
' .NET:
' 0.6822871999174 = 0.6822871999174: True
'
' Attempting to round-trip a Double with 'G17':
' 0.6822871999174 = 0.6822871999174: True
Hexadecimale notatieaanduiding (X)
De hexadecimale notatieaanduiding (X) converteert een getal naar een reeks hexadecimale cijfers. In het geval van de notatieaanduiding wordt aangegeven of u hoofdletters of kleine letters wilt gebruiken voor hexadecimale cijfers die groter zijn dan 9. Gebruik bijvoorbeeld 'X' om 'ABCDEF' en 'x' te produceren om 'abcdef' te produceren. Deze indeling wordt alleen ondersteund voor integrale typen.
De precisieaanduiding geeft het minimale aantal cijfers aan dat in de resulterende tekenreeks is gewenst. Indien nodig wordt het getal opgevuld met nullen links om het aantal cijfers te produceren dat wordt opgegeven door de precisieaanduiding.
De resultaattekenreeks wordt niet beïnvloed door de opmaakgegevens van het huidige NumberFormatInfo-object.
In het volgende voorbeeld worden Int32 waarden opgemaakt met de hexadecimale notatieaanduiding.
int value;
value = 0x2045e;
Console::WriteLine(value.ToString("x"));
// Displays 2045e
Console::WriteLine(value.ToString("X"));
// Displays 2045E
Console::WriteLine(value.ToString("X8"));
// Displays 0002045E
value = 123456789;
Console::WriteLine(value.ToString("X"));
// Displays 75BCD15
Console::WriteLine(value.ToString("X2"));
// Displays 75BCD15
int value;
value = 0x2045e;
Console.WriteLine(value.ToString("x"));
// Displays 2045e
Console.WriteLine(value.ToString("X"));
// Displays 2045E
Console.WriteLine(value.ToString("X8"));
// Displays 0002045E
value = 123456789;
Console.WriteLine(value.ToString("X"));
// Displays 75BCD15
Console.WriteLine(value.ToString("X2"));
// Displays 75BCD15
Dim value As Integer
value = &h2045e
Console.WriteLine(value.ToString("x"))
' Displays 2045e
Console.WriteLine(value.ToString("X"))
' Displays 2045E
Console.WriteLine(value.ToString("X8"))
' Displays 0002045E
value = 123456789
Console.WriteLine(value.ToString("X"))
' Displays 75BCD15
Console.WriteLine(value.ToString("X2"))
' Displays 75BCD15
Opmerkingen
Deze sectie bevat aanvullende informatie over het gebruik van tekenreeksen met een standaard numerieke notatie.
Configuratiescherm-instellingen
De instellingen in de Landinstellingen item in het Configuratiescherm zijn van invloed op de resultaattekenreeks die wordt geproduceerd door een opmaakbewerking. Deze instellingen worden gebruikt voor het initialiseren van het NumberFormatInfo object dat is gekoppeld aan de huidige cultuur, die waarden biedt die worden gebruikt voor het beheren van opmaak. Computers die verschillende instellingen gebruiken, genereren verschillende resultaattekenreeksen.
Als de CultureInfo(String) constructor wordt gebruikt om een nieuw CultureInfo-object te instantiëren dat dezelfde cultuur vertegenwoordigt als de huidige systeemcultuur, worden alle aanpassingen die zijn ingesteld door de landinstellingen item in het Configuratiescherm toegepast op het nieuwe CultureInfo-object. U kunt de CultureInfo(String, Boolean) constructor gebruiken om een CultureInfo-object te maken dat niet overeenkomt met de aanpassingen van een systeem.
Eigenschappen NumberFormatInfo
Opmaak wordt beïnvloed door de eigenschappen van het huidige NumberFormatInfo-object, dat impliciet wordt geleverd door de huidige cultuur of expliciet door de parameter IFormatProvider van de methode die opmaak aanroept. Geef een NumberFormatInfo of CultureInfo-object op voor die parameter.
Notitie
Zie het onderwerp NumberFormatInfo klasse voor informatie over het aanpassen van de patronen of tekenreeksen die worden gebruikt voor het opmaken van numerieke waarden.
Integrale en numerieke typen drijvende komma
Sommige beschrijvingen van standaardaanduidingen voor numerieke notaties verwijzen naar integrale of numerieke typen drijvende komma. De integrale numerieke typen zijn Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64en BigInteger. De numerieke typen drijvende komma zijn Decimal, Half, Singleen Double.
Drijvendekomma-infiniteiten en NaN
Ongeacht de notatietekenreeks, als de waarde van een Half, Singleof Double type drijvende komma positief oneindig, negatief oneindig of niet een getal (NaN) is, is de opgemaakte tekenreeks de waarde van de respectieve PositiveInfinitySymbol, NegativeInfinitySymbolof NaNSymbol eigenschap die is opgegeven door het momenteel toepasselijke NumberFormatInfo-object.
Codevoorbeeld
In het volgende voorbeeld wordt een integraal en een numerieke waarde met drijvende komma opgemaakt met behulp van de en-US cultuur en alle standaardaanduidingen voor numerieke notaties. In dit voorbeeld worden twee specifieke numerieke typen (Double en Int32) gebruikt, maar zouden vergelijkbare resultaten opleveren voor een van de andere numerieke basistypen (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, BigInteger, Decimal, Halfen Single).
// Display string representations of numbers for en-us culture
CultureInfo ci = new CultureInfo("en-us");
// Output floating point values
double floating = 10761.937554;
Console.WriteLine("C: {0}",
floating.ToString("C", ci)); // Displays "C: $10,761.94"
Console.WriteLine("E: {0}",
floating.ToString("E03", ci)); // Displays "E: 1.076E+004"
Console.WriteLine("F: {0}",
floating.ToString("F04", ci)); // Displays "F: 10761.9376"
Console.WriteLine("G: {0}",
floating.ToString("G", ci)); // Displays "G: 10761.937554"
Console.WriteLine("N: {0}",
floating.ToString("N03", ci)); // Displays "N: 10,761.938"
Console.WriteLine("P: {0}",
(floating/10000).ToString("P02", ci)); // Displays "P: 107.62 %"
Console.WriteLine("R: {0}",
floating.ToString("R", ci)); // Displays "R: 10761.937554"
Console.WriteLine();
// Output integral values
int integral = 8395;
Console.WriteLine("C: {0}",
integral.ToString("C", ci)); // Displays "C: $8,395.00"
Console.WriteLine("D: {0}",
integral.ToString("D6", ci)); // Displays "D: 008395"
Console.WriteLine("E: {0}",
integral.ToString("E03", ci)); // Displays "E: 8.395E+003"
Console.WriteLine("F: {0}",
integral.ToString("F01", ci)); // Displays "F: 8395.0"
Console.WriteLine("G: {0}",
integral.ToString("G", ci)); // Displays "G: 8395"
Console.WriteLine("N: {0}",
integral.ToString("N01", ci)); // Displays "N: 8,395.0"
Console.WriteLine("P: {0}",
(integral/10000.0).ToString("P02", ci)); // Displays "P: 83.95 %"
Console.WriteLine("X: 0x{0}",
integral.ToString("X", ci)); // Displays "X: 0x20CB"
Console.WriteLine();
Option Strict On
Imports System.Globalization
Imports System.Threading
Module NumericFormats
Public Sub Main()
' Display string representations of numbers for en-us culture
Dim ci As New CultureInfo("en-us")
' Output floating point values
Dim floating As Double = 10761.937554
Console.WriteLine("C: {0}", _
floating.ToString("C", ci)) ' Displays "C: $10,761.94"
Console.WriteLine("E: {0}", _
floating.ToString("E03", ci)) ' Displays "E: 1.076E+004"
Console.WriteLine("F: {0}", _
floating.ToString("F04", ci)) ' Displays "F: 10761.9376"
Console.WriteLine("G: {0}", _
floating.ToString("G", ci)) ' Displays "G: 10761.937554"
Console.WriteLine("N: {0}", _
floating.ToString("N03", ci)) ' Displays "N: 10,761.938"
Console.WriteLine("P: {0}", _
(floating / 10000).ToString("P02", ci)) ' Displays "P: 107.62 %"
Console.WriteLine("R: {0}", _
floating.ToString("R", ci)) ' Displays "R: 10761.937554"
Console.WriteLine()
' Output integral values
Dim integral As Integer = 8395
Console.WriteLine("C: {0}", _
integral.ToString("C", ci)) ' Displays "C: $8,395.00"
Console.WriteLine("D: {0}", _
integral.ToString("D6")) ' Displays "D: 008395"
Console.WriteLine("E: {0}", _
integral.ToString("E03", ci)) ' Displays "E: 8.395E+003"
Console.WriteLine("F: {0}", _
integral.ToString("F01", ci)) ' Displays "F: 8395.0"
Console.WriteLine("G: {0}", _
integral.ToString("G", ci)) ' Displays "G: 8395"
Console.WriteLine("N: {0}", _
integral.ToString("N01", ci)) ' Displays "N: 8,395.0"
Console.WriteLine("P: {0}", _
(integral / 10000).ToString("P02", ci)) ' Displays "P: 83.95 %"
Console.WriteLine("X: 0x{0}", _
integral.ToString("X", ci)) ' Displays "X: 0x20CB"
Console.WriteLine()
End Sub
End Module