Cvičení – provádění matematických operací
Teď, když rozumíte základům sčítání a důležitějším, implicitní převod typů mezi číselnými a řetězcovými datovými typy, se podíváme na několik dalších běžných matematických operací s číselnými daty.
Provádění základních matematických operací
Napsání kódu pro provádění sčítání, odčítání, násobení a dělení s celými čísly
Vyberte veškerý kód v editoru .NET a stisknutím klávesy Delete nebo Backspace ho odstraňte.
Do editoru .NET zadejte následující kód:
int sum = 7 + 5; int difference = 7 - 5; int product = 7 * 5; int quotient = 7 / 5; Console.WriteLine("Sum: " + sum); Console.WriteLine("Difference: " + difference); Console.WriteLine("Product: " + product); Console.WriteLine("Quotient: " + quotient);
Spusťte kód. Měl by se zobrazit následující výstup:
Sum: 12 Difference: 2 Product: 35 Quotient: 1
Jak vidíte:
+
je operátor sčítání.-
je operátor odčítání.*
je operátor násobení./
je operátor dělení.
Výsledný podíl příkladu dělení však nemusí být to, co jste očekávali. Hodnoty za desetinnou čárkou jsou zkráceny od quotient
té doby, co je definována jako int
, a int
nemohou obsahovat hodnoty za desetinnou čárkou.
Přidání kódu pro dělení pomocí literálových desetinných dat
Pokud chcete zobrazit správné fungování dělení, musíte použít datový typ, který podporuje desetinné číslice za desetinnou čárkou, například decimal
.
Odstraňte kód z předchozích kroků a do editoru .NET zadejte následující kód:
decimal decimalQuotient = 7.0m / 5; Console.WriteLine($"Decimal quotient: {decimalQuotient}");
Spusťte kód. Měl by se zobrazit následující výstup:
Decimal quotient: 1.4
Aby to fungovalo, musí být podíl (nalevo od operátoru přiřazení) typu decimal
a nejméně jedna čísla rozdělená musí být také typu decimal
(obě čísla mohou být také typemdecimal
).
Tady jsou další dva příklady, které fungují stejně dobře:
decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;
Následující řádky kódu ale nebudou fungovat (nebo budou generovat nepřesné výsledky):
int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;
Přidání kódu pro přetypování výsledků celočíselného dělení
Co když nepracujete s literálovými hodnotami? Jinými slovy, co když potřebujete vydělit dvě proměnné typu int
a nechcete, aby se výsledek ořízl? V takovém případě musíte provést přetypování – datový typ int
změníte dočasně na decimal
. Přetypování je druh převodu dat, který dává kompilátoru pokyn, aby s hodnotou dočasně zacházel tak, jako by šlo o jiný datový typ.
Když chcete typ int
přetypovat na decimal
, přidáte před hodnotu operátor přetypování. K přetypování použijete název datového typu obklopeného závorky před hodnotou. V tomto případě byste přidali (decimal)
před proměnné first
a second
.
Odstraňte kód z předchozích kroků a do editoru .NET zadejte následující kód:
int first = 7; int second = 5; decimal quotient = (decimal)first / (decimal)second; Console.WriteLine(quotient);
Spusťte kód. Měl by se zobrazit následující výstup:
1.4
Poznámka:
Viděli jste tři použití operátoru závorek: vyvolání metody, pořadí operací a přetypování.
Napsání kódu pro určení zbytku po celočíselném dělení
Operátor modulu %
vám řekne zbytek int
dělení. Dá se tak zjistit, jestli je jedno číslo dělitelné jiným. To může být užitečné během dlouhých operací zpracování, když se cyklicky prochází stovkami nebo tisíci datových záznamů a vy chcete koncovému uživateli poskytnout zpětnou vazbu po zpracování každých 100 datových záznamů.
Odstraňte kód z předchozích kroků a do editoru .NET zadejte následující kód:
Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}"); Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
Spusťte kód. Měl by se zobrazit následující výstup:
Modulus of 200 / 5 : 0 Modulus of 7 / 5 : 2
Když je zbytek po dělení nulový, znamená to, že dělenec je dělitelný dělitelem.
Pořadí operací
Jak jste se dozvěděli v předchozím cvičení, můžete symboly použít ()
jako pořadí operátorů operací . Pořadí provádění operací je ale určené i jinak.
V matematice je PEMDAS zkratka, která pomáhá studentům pamatovat pořadí operací. Toto pořadí je:
- Závorky (jako první se provádí operace v závorkách)
- Umocňování
- Násobení a dělení (zleva doprava)
- Sčítání a odčítání (zleva doprava)
V jazyce C# platí stejné pořadí operací s výjimkou umocňování. I když v jazyce C# neexistuje žádný operátor exponentu, můžete tuto metodu System.Math.Pow použít. Touto metodou i dalšími metodami se zabývá modul Volání metod z knihovny tříd .NET pomocí jazyka C#.
Napsání kódu pro cvičení pořadí operací jazyka C#
Odstraňte kód z předchozích kroků a do editoru .NET zadejte následující kód:
int value1 = 3 + 4 * 5; int value2 = (3 + 4) * 5; Console.WriteLine(value1); Console.WriteLine(value2);
Tady vidíte rozdíl při provádění stejných operací v jiném pořadí.
Spusťte kód. Měl by se zobrazit následující výstup:
23 35
Rekapitulace
Tady je, co jste se zatím naučili o matematických operacích v jazyce C#:
- Základní matematické operace se provádějí pomocí operátorů
+
,-
,*
a/
. - Když vydělíte dvě hodnoty typu
int
, ve výsledku se oříznou všechny hodnoty za desetinnou čárkou (tečkou). Pokud chcete zachovat hodnoty za desetinnou čárkou, musíte dělitele nebo dělitele (nebo obojí) přetypovat naint
číslo s plovoucí desetinnou čárkou, jakodecimal
je číslo s plovoucí desetinnou čárkou, a potom musí být podíl stejného typu s plovoucí desetinnou čárkou, aby nedocházelo ke zkrácení. - Operace přetypování způsobí, že se s hodnotou bude dočasně zacházet tak, jako by šlo o jiný datový typ.
- Operátor
%
umožňuje získat zbytek po dělení. - Operace se provádějí v pořadí: závorky, umocňování, násobení a dělení (zleva doprava), sčítání a odčítání (zleva doprava).