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;