Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De numerieke typen drijvende komma vertegenwoordigen reële getallen. Alle numerieke typen drijvende komma zijn waardetypen. Ze zijn ook eenvoudige typen en u kunt ze initialiseren met behulp van letterlijke gegevens. Alle numerieke typen drijvende komma ondersteunen rekenkundige, vergelijkings- en gelijkheidsoperators .
De C#-taalreferentiedocumenten de laatst uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.
De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.
Aanbeveling
Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.
Kenmerken van de typen drijvende komma
C# ondersteunt de volgende vooraf gedefinieerde typen drijvende komma:
| C#-type/trefwoord | Bereik bij benadering | Precisie | Grootte | .NET-type |
|---|---|---|---|---|
float |
±1,5 x 10−45 tot ±3,4 x 1038 | ~6-9 cijfers | 4 bytes | System.Single |
double |
±5,0 × 10−324 tot ±1,7 × 10308 | ~15-17 cijfers | 8 bytes | System.Double |
decimal |
±1,0 x 10-28 tot ±7.9228 x 1028 | 28-29 cijfers | 16 bytes | System.Decimal |
In de voorgaande tabel is elk C#-type trefwoord uit de meest linkse kolom een alias voor het bijbehorende .NET-type. Ze zijn uitwisselbaar. De volgende declaraties declareren bijvoorbeeld variabelen van hetzelfde type:
double a = 12.3;
System.Double b = 12.3;
De standaardwaarde van elk type drijvende komma is nul, 0. Elk van de typen drijvende komma heeft de MinValue en MaxValue constanten die de minimale en maximale eindige waarde van dat type bieden. De float en double typen bieden ook constanten die niet-een-getal- en oneindigheidswaarden vertegenwoordigen. Het type bevat bijvoorbeeld double de volgende constanten: Double.NaN, Double.NegativeInfinityen Double.PositiveInfinity.
Het decimal type is geschikt wanneer de vereiste mate van precisie wordt bepaald door het aantal cijfers rechts van het decimaalteken. Dergelijke getallen worden vaak gebruikt in financiële toepassingen, voor valutabedragen (bijvoorbeeld $ 1,00), rentepercentages (bijvoorbeeld 2,625%), enzovoort. Zelfs getallen die nauwkeurig zijn tot slechts één decimaal cijfer, worden nauwkeuriger verwerkt door het decimal type: 0,1, bijvoorbeeld, kunnen exact worden weergegeven door een decimal exemplaar, terwijl er geen double of float exemplaar is dat precies 0,1 vertegenwoordigt. Vanwege dit verschil in numerieke typen kunnen onverwachte afrondingsfouten optreden in rekenkundige berekeningen wanneer u of double voor decimale gegevens gebruiktfloat. U kunt double in plaats van decimal wanneer u de prestaties optimaliseert belangrijker is dan nauwkeurigheid te garanderen. Elk verschil in prestaties wordt echter onopgemerkt door alle, maar de meest rekenintensieve toepassingen. Een andere mogelijke reden om te vermijden decimal is om de opslagvereisten te minimaliseren.
ML.NET bijvoorbeeld gebruikt float omdat het verschil tussen 4 bytes en 16 bytes telt voor zeer grote gegevenssets. Zie System.Decimal voor meer informatie.
U kunt integrale typen en de float typen double in een expressie combineren. In dit geval worden integrale typen impliciet geconverteerd naar een van de typen drijvende komma en, indien nodig, wordt het float type impliciet geconverteerd naar double. De expressie wordt als volgt geëvalueerd:
- Als er een
doubletype in de expressie is, resulteertdoublede expressie in , ofboolin relationele vergelijkingen en gelijkheidsvergelijkingen. - Als er geen
doubletype in de expressie is, resulteertfloatde expressie in ofboolin relationele vergelijkingen en gelijkheidsvergelijkingen.
U kunt ook integrale typen en het decimal type in een expressie combineren. In dit geval worden integrale typen impliciet geconverteerd naar het decimal type en de expressie resulteert decimalin , of in bool relationele en gelijkheidsvergelijkingen.
U kunt het decimal type niet combineren met het float type en double typen in een expressie. Als u in dit geval rekenkundige bewerkingen, vergelijkingen of gelijkheidsbewerkingen wilt uitvoeren, moet u de operanden expliciet converteren van of naar het decimal type, zoals in het volgende voorbeeld wordt weergegeven:
double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);
U kunt standaardtekenreeksen voor numerieke notatie of aangepaste numerieke notatietekenreeksen gebruiken om een drijvende-kommawaarde op te maken.
Echte letterlijke gegevens
Het achtervoegsel op een echte letterlijke gegevens bepaalt het type:
- Een letterlijke letterlijke zonder achtervoegsel of met het
dofDachtervoegsel is eendouble. - Een letterlijke met het
fofFachtervoegsel is eenfloat. - Een letterlijke met het
mofMachtervoegsel is eendecimal.
De volgende code toont een voorbeeld van elk type:
double d = 3D;
d = 4d;
d = 3.934_001;
float f = 3_000.5F;
f = 5.4f;
decimal myMoney = 3_000.5m;
myMoney = 400.75M;
In het voorgaande voorbeeld ziet u ook het gebruik van _ als scheidingsteken voor cijfers. U kunt het scheidingsteken voor getallen gebruiken met allerlei numerieke letterwaarden.
U kunt ook wetenschappelijke notatie gebruiken, waarmee een exponent deel van een echte letterlijke eigenschap wordt opgegeven, zoals in het volgende voorbeeld wordt weergegeven:
double d = 0.42e2;
Console.WriteLine(d); // output 42
float f = 134.45E-2f;
Console.WriteLine(f); // output: 1.3445
decimal m = 1.5E6m;
Console.WriteLine(m); // output: 1500000
Conversies
Er is slechts één impliciete conversie tussen numerieke typen met drijvende komma: van float tot double. U kunt elk type drijvende komma echter converteren naar elk ander type drijvende komma met behulp van de expliciete cast. Zie ingebouwde numerieke conversies voor meer informatie.
C#-taalspecificatie
Zie de volgende secties van de C#-taalspecificatie voor meer informatie: