Другие языки программирования и технологии

Почему при делении дробных чисел пишет результат 0 на С++? x1=(b+pow(d,0.5))/2/a;

В С++, по умолчанию, целочисленные константы имеют тип данных int, а вещественные константы - тип данных double. Во избежании ошибок, которые возникают при делении двух целых значений (констант либо переменных целого типа) следует использовать явное преобразование к вещественному типу. Например:

int a = 5, b = 2, c,
double x = 5.0, y = 2.0, z;

c = 2 / 5; // Результат 0, всё целого типа
c = b / a; // Результат 0, всё целого типа
z = 2 / 5; // Результат 0, константы в выражении целого типа
z = b / a; // Результат 0, переменные в выражении целого типа
c = y / x: // Результат 0, присваивается в переменную целого типа
c = 2.0 / 5.0 // Результат 0, присваивается в переменную целого типа
z = 2.0 / 5; // Результат 0, присваивается в переменную целого типа

// Обязательное условие - присваивание должно выполняться в переменную вещественного типа
z = 2.0 / 5.0 // Результат 0.4, в выражении вещественные константы
z = y / x: // Результат 0.4, в выражении все переменные одного вещественного типа
z = 2.0 / 5; // Результат 0.4, если хотя бы один из операндов операции деления вещественного типа, всё выражение принимает вещественный тип
z = 2 / x; // Результат 0.4, аналогично и для переменных и констант
z = (double) b / a; // Результат 0.4, явное приведение к типу данных double переменной b
z = (double) 2 / 5; // Результат 0.4, явное приведение к типу данных double константы 2
z = double (b) / 5; // Результат 0.4, явное приведение к типу данных double переменной b (улучшенный синтаксис для С++)
РК
Роман Кочетков
88 815
Лучший ответ
Потому что 1/2=0
А 1.0/2.0=0.5

Смекаешь?
Dima Istomin
Dima Istomin
96 625
переменные-то небось целочисленные да?
мужик вверху сказал тебе шоб ты использовал флоат
Yakov Levin
Yakov Levin
8 401

Похожие вопросы