Ćwiczenie — wykonywanie operacji matematycznych
Teraz, gdy znasz podstawy dodawania i co ważniejsze niejawnej konwersji typów między typami danych liczbowych i ciągowych, przyjrzyjmy się kilku innym typowym operacjom matematycznym na danych liczbowych.
Wykonywanie podstawowych operacji matematycznych
Pisanie kodu w celu wykonania dodawania, odejmowania, mnożenia i dzielenia z liczbami całkowitymi
Zaznacz cały kod w edytorze .NET, a następnie naciśnij Delete lub Backspace , aby go usunąć.
Wprowadź następujący kod w edytorze .NET:
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);
Uruchom kod. Powinny zostać wyświetlone następujące dane wyjściowe:
Sum: 12 Difference: 2 Product: 35 Quotient: 1
Jak widzisz:
+
to operator dodawania-
to operator odejmowania*
to operator mnożenia/
to operator dzielenia
Jednak wynikowy iloraz przykładu dzielenia może nie być oczekiwany. Wartości po przecinku są obcinane od quotient
wartości , ponieważ jest ona zdefiniowana jako int
, i int
nie może zawierać wartości po przecinku.
Dodawanie kodu do wykonywania dzielenia przy użyciu danych dziesiętnych literału
Aby zobaczyć, że dzielenie działa prawidłowo, należy użyć typu danych obsługującego cyfry ułamkowe po przecinku dziesiętnym, takim jak decimal
.
Usuń kod z poprzednich kroków i wprowadź następujący kod w edytorze .NET:
decimal decimalQuotient = 7.0m / 5; Console.WriteLine($"Decimal quotient: {decimalQuotient}");
Uruchom kod. Powinny zostać wyświetlone następujące dane wyjściowe:
Decimal quotient: 1.4
Aby to działało, iloraz (po lewej stronie operatora przypisania) musi być typu, a co najmniej jedna z podzielonych liczb musi być decimal
również typu decimal
(obie liczby mogą być również typemdecimal
).
Oto dwa dodatkowe przykłady, które działają równie dobrze:
decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;
Jednak następujące wiersze kodu nie będą działały (lub dadzą niedokładne wyniki):
int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;
Dodawanie kodu w celu rzutowania wyników dzielenia liczb całkowitych
Co zrobić, jeśli nie pracuje się z wartościami literału? Innymi słowy, co trzeba zrobić, jeśli chce się podzielić dwie zmienne typu int
, ale wynik nie ma być obcięty? W takim przypadku trzeba rzutować typ danych z int
na decimal
. Rzutowanie to jeden z typów konwersji danych. Kompilator jest instruowany, aby tymczasowo traktować wartość tak, jakby była innym typem danych.
Aby rzutować typ int
na decimal
, przed wartością dodaje się operator rzutowania. Nazwa typu danych jest częścią nawiasów przed wartością, aby ją rzutować. W takim przypadku należy dodać (decimal)
zmienne przed zmiennymi first
i second
.
Usuń kod z poprzednich kroków i wprowadź następujący kod w edytorze .NET:
int first = 7; int second = 5; decimal quotient = (decimal)first / (decimal)second; Console.WriteLine(quotient);
Uruchom kod. Powinny zostać wyświetlone następujące dane wyjściowe:
1.4
Uwaga
Pokazano trzy zastosowania operatora nawiasu: wywołanie metody, kolejność operacji i rzutowanie.
Pisanie kodu w celu określenia reszty po dzieleniu liczb całkowitych
Operator %
modulu informuje o pozostałej części dzielenia int
. W ten sposób można uzyskać informację, czy jedna liczba jest podzielna przez drugą. Może to być przydatne w długotrwałych operacjach przetwarzania, gdy w pętli przetwarza się setki lub tysiące rekordów danych i chce się informować użytkownika końcowego o przetworzeniu każdej kolejnej setki rekordów danych.
Usuń kod z poprzednich kroków i wprowadź następujący kod w edytorze .NET:
Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}"); Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
Uruchom kod. Powinny zostać wyświetlone następujące dane wyjściowe:
Modulus of 200 / 5 : 0 Modulus of 7 / 5 : 2
Gdy modulo jest równe 0, oznacza to, że dzielna jest podzielna przez dzielnik.
Kolejność operacji
Jak pokazano w poprzednim ćwiczeniu, możesz użyć ()
symboli jako kolejności operatorów operacji . Nie jest to jednak jedyny sposób określania kolejności działań.
W matematyce PEMDAS jest akronimem, który pomaga uczniom zapamiętać kolejność operacji. Jest ona następująca:
- Nawiasy (cokolwiek jest w nawiasie, ma pierwszeństwo)
- Potęgi
- Mnożenie i dzielenie (od lewej do prawej)
- Dodawanie i odejmowanie (od lewej do prawej)
W języku C# obowiązuje ta sama kolejność z wyjątkiem potęg. Chociaż w języku C# nie ma operatora wykładniczego, możesz użyć System.Math.Pow metody . Ta metoda i inne zostaną omówione w module „Wywoływanie metod z biblioteki klas platformy .NET przy użyciu języka C#”.
Pisanie kodu w celu ćwiczenia kolejności operacji w języku C#
Usuń kod z poprzednich kroków i wprowadź następujący kod w edytorze .NET:
int value1 = 3 + 4 * 5; int value2 = (3 + 4) * 5; Console.WriteLine(value1); Console.WriteLine(value2);
W tym miejscu widać różnicę podczas wykonywania tych samych operacji w innej kolejności.
Uruchom kod. Powinny zostać wyświetlone następujące dane wyjściowe:
23 35
Podsumowanie
Poniżej przedstawiono zdobytą wiedzę na temat operacji matematycznych w języku C#:
- Używaj operatorów takich jak
+
,-
,*
i/
, aby wykonywać podstawowe działania matematyczne. - Dzielenie dwóch wartości typu
int
będzie powodować obcinanie wszelkich wartości po przecinku dziesiętnym. Aby zachować wartości po przecinku dziesiętnym, należy rzutować dzielnik lub dywidendę (lub obie) zint
do liczby zmiennoprzecinkowej, jakdecimal
wcześniej, a następnie iloraz musi być tego samego typu zmiennoprzecinkowego, aby uniknąć obcinania. - Operacja rzutowania pozwala tymczasowo traktować wartość tak, jakby miała inny typ danych.
- Operator
%
pozwala przechwycić resztę z dzielenia. - Kolejność wykonywania działań jest taka sama jak znana z lekcji matematyki.