– Oto kilka ciekawostek dotyczących typów rzeczywistych (zmiennoprzecinkowych). Zacznijmy od tego przykładu:

float f = 3 / 5;

– Wynikiem tego działania będzie f równe... zero!

– Tak, Raszi coś o tym wspominał.

– Och, naprawdę? Świetnie. Powtórek nigdy za wiele.

– W tym przykładzie nie ma błędu. Operacja dzielenia zawiera dwie liczby całkowite, więc reszta z dzielenia jest po prostu ignorowana. Aby tak się nie stało, przynajmniej jedna z tych dwóch liczb w operacji dzielenia musi być liczbą zmiennoprzecinkową.

– Jeśli jedna z liczb jest zmiennoprzecinkowa, to druga liczba zostanie najpierw przekonwertowana na typ zmiennoprzecinkowy, a następnie zostanie przeprowadzone dzielenie.

– Możesz rozwiązać ten problem w taki sposób:

Zapis dla liczb zmiennoprzecinkowych:
float f = 3.0f / 5.0f;
float f = 3.0f / 5;
float f = 3 / 5.0f;

– A co, jeśli dzielenie zawiera zmienne?

– Wtedy robimy tak:

Przekonwertuj zmienną integer na wartość zmiennoprzecinkową:
int a = 3, b = 5;
float f = (a * 1.0f) / b;


int a = 3, b = 5;
float f = a / (b * 1.0f);


int a = 3, b = 5;
float f = (a * 1.0f) / (b * 1.0f);


 int a = 3, b = 5;
float f = (float) a / b; 

– Dziwnie to wygląda. Nie ma może jakiejś innej operacji dzielenia – takiej wygodniejszej?

– Nie. Mamy tylko to.

– OK. Żaden problem.