Все целые типы неявным образом конвертируются в дробные в тех случаях, когда это необходимо.
Ну, например, функция вычисления квадратного корня
Math.Sqrt. Она принимает только double тип. Но это не мешает без преобразования вычислять корень целого числа:
[code]
int a = 25;
double b = Math.Sqrt(a); //Получим 5
[/code]

Если посмотреть на рисунок, вы увидите, что Math.Sqrt принимает только double-тип. Однако он полностью в себе содержит int числа, поэтому вот такая запись не является ошибкой, но и не имеет смысла:
[code]
int a = 25;
double b = Math.Sqrt((double)a); //Получим 5
[/code]
Сама запись (double) перед переменной, это и есть приведение числа к этому типу.
[code]
int a = 25;
double b = (double)a; //Приведение к типу double
float c = (float)a; //Приведение к типу float
decimal d = (decimal)a; //Приведение к типу decimal
[/code]
Объясню, для чего тогда нужно приведение типов. Скажем, у вас целые числа (они взяты при вводе, с какой-то функции, возвращающей целые числа). Не важно, откуда, но они целые. И надо найти деление одного на другое. Например, 25 / 4. При попытке поделить напрямую вы получите только целую часть. А именно 6.
[code]
int a = 25;
int b = 4;
int c = a / b; //Получите ровно 6
[/code]
Если же вы хотите получить точное значение с помощью знака "/", придётся использовать double-тип
[code]
int a = 25;
int b = 4;
double c = (double)a / (double)b; //Получите 6,25
[/code]
Переменная "с" тоже имеет тип double, т.е. double/double=double
Для дотошных:
[code]
int a = 25;
int b = 4;
double c = (double)a / b; //Получите 6,25
double d = a / (double)b; //Получите 6,25
[/code]
Таким образом видно, что достаточно к типу double привести только одно из чисел математического выражения. Другое число будет к типу double приведено неявным образом.
Дополнительная информация о том, как вывести результат в
консоли или
WinForm