Dlaczego dzielenie dwóch 32-bitowych liczb całkowitych, gdy (int / int) zwraca mi 0, ale jeśli użyję Decimal.Divide (), otrzymuję poprawną odpowiedź?
Z góry dzięki za pmoc!
1 odpowiedź
int jest typem całkowitym; dzielenie dwóch intó całkowitych wykonuje dzielenie liczb całkowitych, tzn. część ułamkowa jest obcinana, ponieważ nie można jej zapisać w typie wyniku (również liczby int!). Decimal ma część ułamkową. Przez wywołanie Decimal.Divide, twoje argumenty int są domyślnie konwertowane na dziesiętne.
Możesz wymusić podział na liczby całkowite na argumentach int, jawnie rzutując przynajmniej jeden z argumentów na typ zmiennoprzecinkowy, np .:
int a = 42;
int b = 23;
double result = (double)a / b;