Код:

double x = 5.0 / 2;
Дело в том, что компилятор воспринимает 5 как целое число int, делит его на другое целое число и получается результат - тоже целое число. И только потом он приводится к типу double:
Код:

double x = double(5 / 2);
Как-то так получается. Для деления с сохранением дробной части нужно 5 привести к типу double
до операции деления:
Код:

double x = double(5) / 2;
Или же просто определить в виде дробного числа, как я показал в самом начале.