Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A lebegőpontos numerikus típusok valós számokat jelölnek. Minden lebegőpontos numerikus típus értéktípus. Ezek szintén egyszerű típusok, és konstansok használatával inicializálhatja őket. Minden lebegőpontos numerikus típus támogatja az aritmetikai, összehasonlítási és egyenlőségi operátorokat.
A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.
A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.
Jótanács
Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.
A lebegőpontos típusok jellemzői
A C# az alábbi előre definiált lebegőpontos típusokat támogatja:
| C# típus/kulcsszó | Hozzávetőleges tartomány | Precizitás | Méret | .NET-típus |
|---|---|---|---|---|
float |
±1,5 x 10−45 ±3,4 x 1038 | ~6-9 számjegy | 4 bájt | System.Single |
double |
±5.0 × 10−324 ±1,7 × 10308 | ~15-17 számjegy | 8 bájt | System.Double |
decimal |
±1.0 x 10-28 ± 7.9228 x 1028 | 28-29 számjegy | 16 bájt | System.Decimal |
Az előző táblázatban a bal szélső oszlop minden C# típusú kulcsszója a megfelelő .NET-típus aliasa. Felcserélhetők. A következő deklarációk például azonos típusú változókat deklarálnak:
double a = 12.3;
System.Double b = 12.3;
Minden lebegőpontos típus alapértelmezett értéke nulla. 0 A lebegőpontos típusok mindegyike rendelkezik olyan MinValue állandókkal és MaxValue állandókkal, amelyek az adott típus minimális és maximális véges értékét adják meg. A float típusok olyan double állandókat is biztosítanak, amelyek nem szám- és végtelenértékeket jelölnek. A típus például a double következő állandókat tartalmazza: Double.NaN, Double.NegativeInfinityés Double.PositiveInfinity.
A decimal típus akkor megfelelő, ha a szükséges pontossági fokot a tizedesvessző jobb oldalán lévő számjegyek száma határozza meg. Ezeket a számokat gyakran használják pénzügyi alkalmazásokban, pénznemösszegekhez (például 1,00 usd), kamatlábakhoz (például 2,625%) stb. A csak egy tizedesjegyre pontos számokat a típus pontosabban decimal kezeli: a 0,1 például pontosan egy példányt decimal jelölhet, míg nincs double vagy float példány, amely pontosan 0,1-et jelöl. A numerikus típusok különbsége miatt váratlan kerekítési hibák léphetnek fel az aritmetikai számításokban a használatkor double vagy float a decimális adatok esetében.
double A teljesítmény optimalizálása a decimal pontosság biztosításánál fontosabb helyett használható. A teljesítménybeli különbségeket azonban a számításigényes alkalmazásokon kívüli összes alkalmazás nem észleli. Egy másik lehetséges oka annak, hogy elkerüljük decimal a tárolási követelmények minimalizálását. ML.NET például azért használjafloat, mert a 4 és 16 bájt közötti különbség nagyon nagy adatkészletekhez ad hozzá. További információért lásd System.Decimal.
Az integráltípusokat és a float kifejezésben szereplő típusokat double kombinálhatja. Ebben az esetben a rendszer implicit módon konvertálja az integráltípusokat a lebegőpontos típusok egyikére, és szükség esetén a float típus implicit módon lesz átalakítva double. A kifejezés kiértékelése a következőképpen történik:
- Ha van egy
doubletípus a kifejezésben, a kifejezés a relációs és egyenlőségi összehasonlítások alapján vagy azokraboollesz kiértékelvedouble. -
doubleHa nincs típus a kifejezésben, akkor a kifejezés a relációs és egyenlőségi összehasonlítások alapján vagy azokraboollesz kiértékelvefloat.
Az integráltípusokat és a decimal típust is kombinálhatja egy kifejezésben. Ebben az esetben a rendszer implicit módon átalakítja az integráltípusokat decimala decimal típusra, és a kifejezés a relációs és egyenlőségi összehasonlításokra, illetve bool azokra lesz kiértékelve.
A kifejezést nem lehet összekeverni decimal a float kifejezésben szereplő típusokkal és double típusokkal. Ebben az esetben, ha számtani, összehasonlítási vagy egyenlőségi műveleteket szeretne végrehajtani, explicit módon át kell alakítania az operandusokat a típusból vagy típusba decimal , ahogy az alábbi példa mutatja:
double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);
A lebegőpontos értékek formázásához használhat standard numerikus formázási sztringeket vagy egyéni numerikus formázási sztringeket .
Valós literálok
A valódi literál utótagja határozza meg a típusát:
- Az utótag nélküli, illetve az
dutótaggal vagyDutótaggal nem rendelkező literál egydouble. - A literál az utótaggal vagy
Fazfutótaggal egyfloat. - A literál az utótaggal vagy
Mazmutótaggal egydecimal.
Az alábbi kód az egyes típusokat mutatja be:
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;
Az előző példa a _. A számjegyelválasztót sokféle numerikus literállal használhatja.
Tudományos jelölést is használhat, amely egy valódi literál kitevő részét adja meg, ahogy az alábbi példa is mutatja:
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
Konverziók
A lebegőpontos numerikus típusok között csak egy implicit átalakítás van: a forrásból float a másikba double. A lebegőpontos típusokat azonban bármilyen más lebegőpontos típussá alakíthatja a explicit leadással. További információ: Beépített numerikus konverziók.
C# nyelvspecifikáció
További információt a C# nyelvspecifikációjának alábbi szakaszaiban talál: