Потеря дробной части в C#
Дробная часть может пропасть, даже когда переменная
остается int или double. Главное -
какие типы стоят внутри действия и как записан
результат.
Деление двух int всегда дает целое.
Хвост отбрасывается, переменные тип не меняют:
int num1 = 7;
int num2 = 2;
Console.WriteLine(num1 / num2); // prints 3
Если хотя бы одно число double, дробь
сохраняется. Целое на время деления расширяется:
int num1 = 7;
double num2 = 2.0;
Console.WriteLine(num1 / num2); // prints 3.5
Запишем целое в double и поделим на целое.
Первое число уже дробное, хвост остается:
int num1 = 7;
double num2 = num1;
Console.WriteLine(num2 / 2); // prints 3.5
Дробный результат в int сам не ляжет.
Чтобы взять только целую часть, число явно
приводят к int. Хвост снова пропадает:
double num = 7.9;
Console.WriteLine((int) num); // prints 7
Сначала деление, потом приведение. Дробь в делении
уже потеряна, и к int доходит только целое:
int num1 = 9;
int num2 = 4;
Console.WriteLine((int) (num1 / num2)); // prints 2
Дан следующий код:
int num1 = 11;
int num2 = 4;
Console.WriteLine(num1 / num2);
Скажите, что выйдет на экран.
Даны две переменные:
int num1 = 11;
double num2 = 4.0;
Найдите частное и выведите его.
Дана переменная:
double num = 11.9;
Выведите целую часть этого числа без округления до ближайшего целого.