Sdílet prostřednictvím


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:

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/NumbersInCsharp/Program.cs" id="Challenge":::

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: