Integrál- és lebegőpontos számok kezelése
Ez az oktatóanyag interaktív módon ismerteti a C# numerikus típusait a böngésző használatával. Megírhatja a C#-ot, és láthatja a kód összeállításának és futtatásának eredményeit. Több leckén keresztül fedezheti fel, hogy hogyan használhat számokat és matematikai operátorokat a C#-ban. A leckékből fokozatosan elsajátíthatja a C# programnyelv alapismereteit.
Tipp.
Ha kódrészletet szeretne beilleszteni a fókusz módba, használja a billentyűparancsot (Ctrl + v vagy cmd + v).
Matematikai műveletek egész számokkal
Futtassa az alábbi kódot az interaktív ablakban. Válassza az Enter fókusz mód gombot. Ezután írja be a következő kódblokkot az interaktív ablakban, és válassza a Futtatás lehetőséget:
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Ha a környezetén dolgozik, inkább a helyi verzióra vonatkozó utasításokat kell követnie.
Láttad az egyik alapvető matematikai műveletet egész számokkal. Az int
típus egész értéket jelöl, mely pozitív vagy negatív egész szám lehet. Összeadáshoz a +
szimbólumot használhatja. Többek között az alábbi gyakori szimbólumokat is használhatja még egész számokkal:
-
szimbólum kivonáshoz*
szimbólum szorzáshoz/
szimbólum osztáshoz
Tipp.
Ebben az interaktív oktatóanyagban önállóan is megismerkedhet az interaktív ablakban írt kód módosításával. Ez az oktatóanyag példákat tartalmaz, amelyeket minden lépésnél kipróbálhat.
Kezdésként próbálja ki ezeket a további műveleteket. Módosítsa a kód harmadik sorát az egyes műveletek kipróbálásához. Minden szerkesztés után válassza a Futtatás gombot.
Kivonás:
int c = a - b;
Szorzás:
int c = a * b;
Osztás:
int c = a / b;
Kísérletezhet úgy is, hogy több matematikai műveletet is megír ugyanabban a sorban, ha szeretné.
Tipp.
A C# (vagy bármely más programnyelv) elsajátítása során óhatatlanul fog néha hibázni a kód írásakor. A fordító azonosítja ezeket a hibákat, és jelenti őket Önnek. Ha a kimenetben hibaüzenetet lát, hasonlítsa össze alaposan a példakódot és az interaktív ablakba beírt kódot, hogy lássa, mit kell javítania. Ha így tesz, az segíthet megérteni a C#-kód struktúráját.
A műveleti sorrend megértése
A C# nyelv a matematika megszokott szabályainak megfelelő sorrendben hajtja végre a matematikai műveleteket. A szorzást és az osztást előbb végzi el a rendszer, mint az összeadást és a kivonást. Próbálja ki ezt az alábbi kód interaktív ablakban való futtatásával:
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
A kimenetben láthatja, hogy a szorzás az összeadás előtt lett végrehajtva.
Más végrehajtási sorrendet is kényszeríthet azonban, ha zárójelek közé írja az elsőként végrehajtandó műveletet vagy műveleteket:
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
Próbálja ki, hogy kombinál többféle műveletet. Cserélje a fenti kódban a negyedik sort például a következőre:
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Itt megfigyelhet egy érdekes részletet az egész számok viselkedésével kapcsolatban. Az egész számokkal való osztás egész számot ad eredményül még akkor is, ha az eredménynek tizedes tört részt kellene tartalmaznia.
Ha még nem látta ezt a viselkedést, próbálkozzon a következő kóddal:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Az eredmények megtekintéséhez válassza a Futtatás ismét lehetőséget.
Az egész számok pontossága és korlátai
Az utolsó példában láthatta, hogy az egész számokkal való osztás csonkolt számot ad eredményül.
A maradékot a maradék operátorral, a következő karakterrel szerezheti be%
:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");
A C# nyelv által definiált egész szám eltér a matematikai egész számoktól egy további módon is: az int
típus rendelkezik egy minimum és egy maximum értékkel. Futtassa ezt a kódot az interaktív ablakban a minimális és a maximális érték megtekintéséhez:
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Ha egy számítás eredménye túllép az alsó vagy a felső korláton, akkor alulcsordulás vagy túlcsordulás történik. Az eredmény ilyen esetben körbefut az egyik határértékről a másikig. Próbálja ki, hogy hozzáadja az alábbi két sort az interaktív ablakban:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Megfigyelheti, hogy az eredmény nagyon közel esik az egész számok minimális (negatív) értékéhez. Megegyezik a min + 2
kifejezés értékével.
Az összeadási művelet túlcsordulást okozott, mivel az eredmény nagyobb volt az egész számok maximális értékénél.
Ezért egy rendkívül nagy negatív számot kapott eredményként, mert a túlcsordulás „körbefut” a legnagyobb lehetséges egész számtól a legkisebbig.
Léteznek más numerikus típusok is eltérő precizitással és korlátokkal, melyeket használhat, ha az int
típus nem felel meg az igényeinek. Vizsgáljuk meg a következő számtípusokat.
A „double” típus használata
A double
numerikus típus dupla pontosságú lebegőpontos számot jelöl. Előfordulhat, hogy nem ismeri még ezeket a kifejezéseket. A lebegőpontos szám praktikus módja az olyan nem egész számok jelölésének, amelyek nagy nagyságrendűek lehetnek akár negatív, akár pozitív tartományban. A dupla pontosság egy relatív kifejezés, amely az érték tárolásához használt bináris számjegyek számát írja le. A dupla pontosságú számok a bináris számjegyek számának kétszeresével rendelkeznek egy pontosságúként. A modern számítógépeken gyakoribb a dupla pontosságú nem egész számok használata, mint az egyszeres pontosságúaké. A rendszer a kulcsszó használatával deklarálja az float
önálló pontosságú számokat.
Ismerkedjünk meg ezzel alaposabban. Futtassa az alábbi kódot az interaktív ablakban, és ellenőrizze az eredményt:
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Megfigyelheti, hogy az eredmény tartalmazza a kvóciens tizedes tört részét is. Próbáljon ki egy némileg összetettebb kifejezést double típusú értékekkel:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
A double típusú értékek tartománya jóval nagyobb az egész szám típusú értékek tartományánál. Próbálja ki az alábbi kódot az interaktív ablakban:
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
Ezeket az értékeket a kimenetben tudományos jelöléssel fogja látni. Az E
jeltől balra lévő szám a mantissza. A jobbra lévő szám az exponens vagy kitevő, mely a 10 hatványait jelöli.
A matematikában használt tizedes tört számokhoz hasonlóan a C# nyelv double típusú számai is tartalmazhatnak kerekítési hibákat. Próbálja ki az alábbi kódot:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Tudod, hogy 0.3
ez, 3/10
és nem pontosan ugyanaz, mint 1/3
. Hasonlóképpen: 0.33
33/100
. Ez közelebb 1/3
van, de még mindig nem pontos.
Feladat
Próbáljon ki más számításokat nagy számokkal, kis számokkal, szorzással és osztással a double
típus használatával. Kísérletezzen némileg összetettebb számítások végzésével is.
Decimális típusok használata
A korábbiak során megismerkedhetett a C# alapvető numerikus típusaival: az int és a double típussal. Van még egy tanulandó típus: a decimal
típus. A decimal
típus kisebb tartománnyal, de nagyobb pontossággal rendelkezik, mint a double
típus. Próbálja ki az alábbi kódot:
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Láthatja, hogy a tartomány kisebb, mint a double
típusé. Megfigyelheti a decimal típus nagyobb pontosságát is, ha beírja az alábbi kódot:
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Láthatja, hogy a decimális típussal végzett matematikai művelet eredményében több számjegy látható a tizedesvesszőtől jobbra.
A konstans értékek után egy M
utótagot írva jelezheti, hogy az értéket decimal
típusúként szeretné használni. Ellenkező esetben a fordító a típust double
feltételezi.
Feljegyzés
A betűt M
választották a legszembetűnhetőbb betűnek a kulcsszavak és decimal
a double
kulcsszavak között.
Feladat
Most, hogy megismerkedett a különböző számtípusokkal, próbáljon meg írni egy olyan kódot, amely kiszámítja egy 2,50 centiméter sugarú kör területét. Ne feledje, hogy a kör területe a sugár négyzete π-vel megszorozva. Egy tipp: A .NET-keretrendszer tartalmazza a π értékét konstansként (Math.PI), melyet használhat a számításában. Math.PIa névtérben System.Math
deklarált összes állandóhoz hasonlóan ez is érték double
. Ezért az értékek helyett decimal
ezt a kihívást kell használniadouble
.
A kapott eredménynek 19 és 20 között kell lennie.
Feladat ellenőrzése
A következőhöz hasonló kódot írt?
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
Ha szeretne, próbálkozhat további képletek írásával is.
Gratulálunk!
Elvégezte a "Számok c#-ban" interaktív oktatóanyagot. Az alábbi Ágak és hurkok hivatkozásra kattintva elindíthatja a következő interaktív oktatóanyagot, vagy felkeresheti a .NET webhelyet a .NET SDK letöltéséhez, projekt létrehozásához a számítógépen, és továbbra is kódolódhat. A "Következő lépések" szakaszban visszatérhet ezekhez az oktatóanyagokhoz.
A C# számokról az alábbi cikkekben tudhat meg többet:
Problémát tapasztalt ezzel a szakasszal kapcsolatban? Ha igen, küldjön visszajelzést, hogy kijavíthassuk a hibát.