Delen via


Numerieke typen drijvende komma (C#-verwijzing)

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 double type in de expressie is, resulteert doublede expressie in , of bool in relationele vergelijkingen en gelijkheidsvergelijkingen.
  • Als er geen double type in de expressie is, resulteert floatde expressie in of bool in 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 d of D achtervoegsel is een double.
  • Een letterlijke met het f of F achtervoegsel is een float.
  • Een letterlijke met het m of M achtervoegsel is een decimal.

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:

Zie ook