Jak používat celá a desetinná čísla v C#
V tomto kurzu se seznámíte s číselnými typy v jazyce C#. Napíšete malé množství kódu, pak tento kód zkompilujete a spustíte. Tento kurz obsahuje řadu lekcí, které zkoumá čísla a matematické operace v jazyce C#. Tyto lekce vás naučí základy jazyka C#.
Spropitné
Když blok fragmentu kódu obsahuje tlačítko Spustit, otevře se interaktivní okno nebo nahradí stávající kód v interaktivním okně. Pokud fragment kódu neobsahuje tlačítko Spustit, můžete kód zkopírovat a přidat ho do aktuálního interaktivního okna.
Prozkoumání celočíselné matematiky
V interaktivním okně spusťte následující kód.
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Předchozí kód ukazuje základní matematické operace s celými čísly. Typ int
představuje celé číslo , kladné nebo záporné celé číslo. K přidání použijete symbol +
. Mezi další běžné matematické operace pro celá čísla patří:
-
-
pro odčítání -
*
pro násobení -
/
pro dělení
Začněte prozkoumáním těchto různých operací. Upravte třetí řádek a vyzkoušejte všechny tyto operace. Pokud chcete například zkusit odečítání, nahraďte +
za -
, jak je znázorněno na následujícím řádku:
int c = a - b;
Zkuste to. Vyberte tlačítko Spustit. Pak zkuste násobit, *
a dělení, /
. Pokud chcete, můžete experimentovat také napsáním několika matematických operací na stejném řádku.
Spropitné
Při zkoumání jazyka C# (nebo libovolného programovacího jazyka) uděláte chyby při psaní kódu. Kompilátor tyto chyby najde a oznámí vám je. Pokud výstup obsahuje chybové zprávy, podívejte se pozorně na ukázkový kód a kód v interaktivním okně a podívejte se, co opravit. Toto cvičení vám pomůže naučit se strukturu kódu jazyka C#.
Prozkoumání pořadí operací
Jazyk C# definuje prioritu různých matematických operací s pravidly konzistentními s pravidly, která jste se naučili v matematice. Násobení a dělení mají přednost před sčítáním a odčítáním. Prozkoumejte to spuštěním následujícího kódu v interaktivním okně:
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
Výstup ukazuje, že násobení se provádí před sčítáním.
Jiné pořadí operací můžete vynutit přidáním závorek kolem operace nebo operací, které chcete provést jako první. Do interaktivního okna přidejte následující řádky:
d = (a + b) * c;
Console.WriteLine(d);
Prozkoumejte další možnosti kombinováním mnoha různých operací. Čtvrtý řádek v předchozím kódu nahraďte následujícím kódem:
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
Můžete si všimnout zajímavého chování pro celá čísla. Celočíselné dělení vždy vytvoří celočíselnou hodnotu, i když byste očekávali, že výsledek bude obsahovat desetinnou nebo zlomkovou část.
Vyzkoušejte následující kód:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Prozkoumání celočíselné přesnosti a omezení
Ta poslední ukázka vám ukázala, že dělení celých čísel zkracuje výsledek. Zbytek můžete získat pomocí operátoru zbytku , znak %
:
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}");
Celočíselné typy jazyka C# se liší od matematických celých čísel jedním způsobem: typ int
má minimální a maximální limity. Vyzkoušejte následující kód a podívejte se na tyto limity:
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Pokud výpočet vytvoří hodnotu, která překročí tyto limity, dochází k podmínce podtečení nebo přetečení. Zdá se, že odpověď se rozpíná od jednoho okraje k druhému. Příklad zobrazíte tak, že do interaktivního okna přidáte tyto dva řádky:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Všimněte si, že odpověď je velmi blízko minimálnímu (zápornému) celočíselnému číslu. Je to stejné jako min + 2
. Operace sčítání přetekla povolené hodnoty pro celá čísla. Odpověď je velké záporné číslo, protože přetečení "přeskakuje" z největší možné celočíselné hodnoty na nejmenší.
Existují i jiné číselné typy s různými omezeními a přesností, které byste použili, když typ int
nevyhovuje vašim potřebám. Pojďme se podrobněji podívat na tyto typy čísel.
Práce s dvojitým typem
Číselný typ double
představuje číslo s plovoucí desetinnou čárkou s dvojitou přesností. Tyto termíny můžou být pro vás nové.
číslo s plovoucí desetinnou čárkou je užitečné pro reprezentaci necelých čísel, která mohou být velká nebo malá svou velikostí.
Dvojitá přesnost je relativní termín, který popisuje počet binárních číslic použitých k uložení hodnoty.
čísla s dvojitou přesností mají dvakrát počet binárních číslic jako s jednoduchou přesností . V moderních počítačích je běžnější používat dvojitou přesnost než jedno číslo přesnosti.
čísla s jednou přesností jsou deklarována pomocí klíčového slova float
. Pojďme se podívat. Spusťte následující kód a podívejte se na výsledek:
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Všimněte si, že odpověď obsahuje desetinnou část podílu. Zkuste trochu složitější výraz s typem double. Můžete použít následující hodnoty nebo nahradit jiná čísla:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
Rozsah dvojité hodnoty je větší než celočíselné hodnoty. V interaktivním okně vyzkoušejte následující kód:
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
Tyto hodnoty jsou vytištěny ve vědeckém zápisu. Číslo před E
je significand. Číslo za E
je exponent představující mocninu čísla 10.
Stejně jako desetinná čísla v matematice můžou mít dvojité hodnoty v jazyce C# chyby zaokrouhlení. Vyzkoušejte tento kód:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Víte, že 0.3
je 3/10
a není úplně stejný jako 1/3
. Podobně 0.33
je 33/100
. Tato hodnota je blíže 1/3
, ale stále není přesná. Bez ohledu na to, kolik desetinných míst přidáte, zůstane chyba zaokrouhlení.
výzva
Zkuste jiné výpočty s velkými čísly, malými čísly, násobením a dělením pomocí typu double
. Zkuste složitější výpočty.
Práce s desetinnými typy
Existuje ještě jeden typ, který se naučíte: typ decimal
. Typ decimal
má menší rozsah, ale větší přesnost než double
. Pojďme se podívat:
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Všimněte si, že rozsah je menší než typ double
. Větší přesnost s desetinným typem můžete zobrazit pomocí následujícího kódu:
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Všimněte si, že matematika používající typ desetinné čárky má vpravo od desetinné čárky více číslic.
Přípona M
čísel je způsob, jakým označujete, že konstanta by měla používat typ decimal
. V opačném případě kompilátor předpokládá typ double
.
Poznámka
Písmeno M
bylo vybráno jako nejvýraznější písmeno mezi klíčovými slovy double
a decimal
.
Výzva
Napište kód, který vypočítá oblast kruhu, jehož poloměr je 2,50 centimetru. Nezapomeňte, že oblast kruhu je poloměr čtvercový násobený PI. Jeden tip: .NET obsahuje konstantu pro PI, Math.PI, kterou můžete pro tuto hodnotu použít.
Math.PI, stejně jako všechny konstanty deklarované v oboru názvů System.Math
, je hodnota double
. Z tohoto důvodu byste pro tuto výzvu měli místo decimal
hodnot použít double
.
Měli byste získat odpověď mezi 19 a 20.
Po vyzkoušení otevřete podokno podrobností a podívejte se, jak jste to udělali:
Zkuste některé další vzorce, pokud chcete.
Dokončili jste interaktivní kurz "Čísla v jazyce C#". Můžete vybrat odkaz Větve a smyčky, abyste zahájili další interaktivní kurz, nebo můžete navštívit web .NET a stáhnout si .NET SDK, vytvořit projekt na svém počítači a pokračovat v kódování. V části Další kroky se vrátíte k těmto kurzům.
Další informace o číslech v jazyce C# najdete v následujících článcích: