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 konstansokkal inicializálhatók. Minden lebegőpontos numerikus típus támogatja az aritmetikai, összehasonlítási és egyenlőségi operátorokat.
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 fogja észrevétlenül használni. 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:
-
doubleHa van típus a kifejezésben, akkor a kifejezés a relációs és egyenlőségi összehasonlításokra vagy azokra lesz kiértékelvedoublebool. - Ha a kifejezésben nincs
doubletípus, akkor a kifejezés a relációs és egyenlőségi összehasonlításokrafloatboolvagy azokra lesz kiértékelve.
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 típus nem keverhető decimal össze 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 típusát az utótag határozza meg az alábbiak szerint:
- Az utótag nélküli vagy az
dutótaggal vagyDutótaggal nem rendelkező literál típusdouble - A literál és az
fFutótag típusafloat - A literál és az
mMutótag típusadecimal
Az alábbi kód az egyes példákat 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, azaz megadhat egy valódi literál kitevő részét, 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 konverzió 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 öntöttel. 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: