Dlaczego Decimal.Divide (int, int) działa, ale (int / int) już nie ?

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;

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.