Jak používat celočíselná čísla a čísla s plovoucí desetinou čárkou v jazyce C#
V tomto kurzu se seznámíte s číselnými typy v jazyce C#. Napíšete malé množství kódu a pak ho zkompilujete a spustíte. Tento kurz obsahuje řadu lekcí, které se zabývají čísly a matematickými operacemi v jazyce C#. V těchto kurzech se seznámíte se základy jazyka C#.
Tip
Pokud chcete vložit fragment kódu do detailního režimu , měli byste použít klávesovou zkratku (Ctrl + v nebo cmd + v).
Požadavky
Kurz očekává, že máte počítač nastavený pro místní vývoj. Pokyny k instalaci a přehled vývoje aplikací v .NET najdete v tématu Nastavení místního prostředí .
Pokud nechcete nastavit místní prostředí, podívejte se na interaktivní verzi tohoto kurzu v prohlížeči.
Seznámení s matematikou celých čísel
Vytvořte adresář s názvem numbers-quickstart. Nastavte ho jako aktuální adresář a spusťte následující příkaz:
dotnet new console -n NumbersInCSharp -o .
Důležité
Šablony jazyka C# pro .NET 6 používají příkazy nejvyšší úrovně. Pokud jste už upgradovali na .NET 6, vaše aplikace nemusí odpovídat kódu v tomto článku. Další informace najdete v článku o nových šablonách jazyka C# generování příkazů nejvyšší úrovně.
Sada .NET SDK 6 také přidává sadu implicitníchglobal using
direktiv pro projekty, které používají následující sady SDK:
- Microsoft.NET.Sdk
- Microsoft.NET.Sdk.Web
- Microsoft.NET.Sdk.Worker
Tyto implicitní global using
direktivy zahrnují nejběžnější obory názvů pro typ projektu.
Další informace najdete v článku o implicitních direktivách using.
Ve svém oblíbeném editoru otevřete soubor Program.cs a nahraďte obsah souboru následujícím kódem:
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Spusťte tento kód zadáním v příkazovém dotnet run
okně.
Viděli jste jednu ze základních matematických operací s celými čísly. Typ int
představuje celé číslo, nulové, kladné nebo záporné celé číslo. Pro sčítání se používá symbol +
. K dalším běžným matematickým operacím s celými čísly patří tyto:
-
pro odčítání*
pro násobení/
pro dělení
Nejdřív si vyzkoušejte uvedené operace. Přidejte tyto řádky za řádek, který zapisuje hodnotu :c
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
Spusťte tento kód zadáním v příkazovém dotnet run
okně.
Pokud chcete, můžete také experimentovat tak, že napíšete několik matematických operací na stejný řádek. Zkuste c = a + b - 12 * 17;
to například. Je povoleno kombinování proměnných a konstantních čísel.
Tip
Když se budete učit pracovat s C# (nebo každým jiným programovacím jazykem), budete při psaní kódu dělat chyby. Kompilátor tyto chyby odhalí a upozorní vás na ně. Pokud výstup obsahuje chybové zprávy, podívejte se pozorně na ukázkový kód a kód v okně a zjistěte, co je potřeba opravit. Toto cvičení vám pomůže seznámit se se strukturou kódu v C#.
Dokončili jste první krok. Než začnete s další částí, přesuneme aktuální kód do samostatné metody. Metoda je řada příkazů seskupených a zadaných názvem. Zavoláte metodu zápisem názvu metody následovaného ()
. Uspořádání kódu do metod usnadňuje zahájení práce s novým příkladem. Po dokončení by měl váš kód vypadat takto:
WorkWithIntegers();
void WorkWithIntegers()
{
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
}
Řádek WorkWithIntegers();
vyvolá metodu . Následující kód deklaruje metodu a definuje ji.
Seznámení s pořadím operací
Zakomentujte volání na WorkingWithIntegers()
adresu . Výstup bude při práci v této části méně nepřehledný:
//WorkWithIntegers();
Spustí //
komentář v jazyce C#. Komentáře jsou jakýkoli text, který chcete zachovat ve zdrojovém kódu, ale nespouštět jako kód. Kompilátor negeneruje z komentářů žádný spustitelný kód. Vzhledem k tomu WorkWithIntegers()
, že se jedná o metodu, stačí zakomentovat jenom jeden řádek.
Jazyk C# definuje prioritu různých matematických operací v souladu se stejnými pravidly, jaká jste se naučili při hodinách matematiky. Násobení a dělení mají přednost před sčítáním a odčítáním. Prozkoumejte to přidáním následujícího kódu za volání a WorkWithIntegers()
spuštěním dotnet run
příkazu :
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
Z výstupu vyplývá, že operace násobení se provede dřív než operace sčítání.
Jiné pořadí operací můžete vynutit přidáním závorek kolem operace nebo operací, které chcete provést jako první. Přidejte následující řádky a spusťte příkaz znovu:
d = (a + b) * c;
Console.WriteLine(d);
Teď prozkoumáme i další možnosti s kombinací několika různých operací. Přidejte něco podobného jako na následujících řádcích. Znovu zkuste příkaz dotnet run
.
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
Můžete si u celých čísel všimnout zvláštního chování. Výsledkem dělení celých čísel je vždycky celé číslo, i když byste očekávali, že bude výsledek obsahovat číslo s desetinnou čárkou nebo zlomek.
Pokud jste toto chování nezaznamenali, vyzkoušejte následující kód:
int e = 7;
int f = 4;
int g = 3;
int h = (e + f) / g;
Console.WriteLine(h);
Znovu zadejte dotnet run
, aby se zobrazily výsledky.
Než budete dál, vezmeme veškerý kód, který jste napsali v této části, a vložíme ho do nové metody. Zavolejte novou metodu OrderPrecedence
. Váš kód by měl vypadat přibližně takto:
// WorkWithIntegers();
OrderPrecedence();
void WorkWithIntegers()
{
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
}
void OrderPrecedence()
{
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
d = (a + b) * c;
Console.WriteLine(d);
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
int e = 7;
int f = 4;
int g = 3;
int h = (e + f) / g;
Console.WriteLine(h);
}
Seznámení s přesností a limity celých čísel
Z poslední ukázky jste se dozvěděli, že při dělení celých čísel dochází ke zkrácení výsledku. Zbytek můžete získat pomocí operátoru modulo, znaku %
. Zkuste následující kód po volání OrderPrecedence()
metody :
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}");
Od celých čísel v matematice se typ integer v jazyce C# se liší v jednom ohledu: typ int
má minimální a maximální limit. Pokud chcete zobrazit tato omezení, přidejte tento kód:
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Pokud je výsledkem určitého výpočtu hodnota, která tyto limity překračuje, nastane stav podtečení nebo přetečení. Odpověď cyklicky přechází od jednoho limitu k druhému. Pokud chcete vidět příklad, přidejte tyto dva řádky:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Všimněte si, že se odpověď těsně blíží minimálnímu (zápornému) celému číslu. Je stejná jako při operaci min + 2
. Operace sčítání přetekla povolené hodnoty celých čísel. Výsledkem je velmi velké záporné číslo, protože při přetečení došlo k „cyklickému přechodu“ od nejvyšší možné celočíselné hodnoty k nejnižší.
Existují i další číselné typy s různými limity a přesností, které můžete použít, pokud typ int
nevyhovuje vašim potřebám. V dalším kroku se na tyto další typy podíváme. Než začnete s další částí, přesuňte kód, který jste napsali v této části, do samostatné metody. Pojmenujte ji TestLimits
.
Práce s typem double
Číselný typ double
představuje číslo s plovoucí desetinnou čárkou a dvojitou přesností. Tyto výrazy možná ještě neznáte. Číslo s plovoucí desetinnou čárkou slouží k reprezentaci jiných než celých čísel, která mohou být buď velmi nízká, nebo velmi vysoká. 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í dvojnásobný počet binárních číslic s jednoduchou přesností. V moderních počítačích je častější používat dvojitou přesnost než čísla s jednoduchou přesností. Čísla s jednoduchou přesností se deklarují pomocí klíčového float
slova. Pojďme se na to podívat blíž. Přidejte 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. Teď zkusíme zadat o něco složitější výraz s čísly typu double:
double e = 19;
double f = 23;
double g = 8;
double h = (e + f) / g;
Console.WriteLine(h);
Rozsah hodnoty double je mnohem větší než u hodnot typu integer. Vyzkoušejte následující kód pod tím, co jste zatím napsali:
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. Číslu vlevo od písmene E
se říká mantisa. Číslo vpravo se označuje jako exponent a značí násobky 10. Stejně jako desetinná čísla v matematice můžou mít i hodnoty typu double v C# chyby zaokrouhlení. Vyzkoušejte tento kód:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Víte, že 0.3
opakování konečného počtu opakování není úplně stejné jako 1/3
.
Úkol
Vyzkoušejte jiné výpočty s velkými čísly, malými čísly, násobením a dělením double
pomocí typu. Zkuste zadat i složitější výpočty. Poté, co jste s výzvou strávili nějaký čas, vezměte kód, který jste napsali, a umístěte ho do nové metody. Pojmenujte novou metodu WorkWithDoubles
.
Práce s desetinnými typy
Seznámili jste se se základními typy čísel v jazyce C#: celými čísly a čísly s dvojitou přesností. Je tu ještě jeden typ, který decimal
se můžete naučit: typ. Typ decimal
má menší rozsah, ale zato větší přesnost než typ double
. Podívejme se na to:
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 je rozsah menší než u typu double
. Větší přesnost typu decimal si můžete ověřit zadáním 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);
Přípona M
za čísly představuje způsob, jak naznačit, že má konstanta používat typ decimal
. V opačném případě kompilátor předpokládá double
typ.
Poznámka
M
Písmeno bylo vybráno jako vizuálně nejvýraznější písmeno mezi klíčovými double
slovy adecimal
.
Všimněte si, že výsledek s typem decimal má napravo od desetinné čárky víc číslic.
Úkol
Seznámili jste se s různými typy čísel a teď můžete napsat kód, který vypočítá obsah kruhu s poloměrem 2,50 centimetru. Obsah kruhu se vypočítá jako poloměr na druhou krát číslo pí. Nápověda: Prostředí .NET obsahuje pro číslo pí konstantu Math.PI, kterou můžete pro tuto hodnotu použít. Math.PI, stejně jako všechny konstanty deklarované v System.Math
oboru názvů, je double
hodnota. Z tohoto důvodu byste pro tuto výzvu měli použít double
místo decimal
hodnot.
Měl by vám vyjít výsledek mezi 19 a 20. Odpověď můžete zkontrolovat tak , že se podíváte na hotový ukázkový kód na GitHubu.
Jestli chcete, můžete si vyzkoušet i další vzorce.
Dokončili jste rychlý start Čísla v jazyce C#. Ve vlastním vývojovém prostředí můžete pokračovat v rychlém startu Větve a smyčky .
Další informace o číslech v jazyce C# najdete v následujících článcích: