В С++, по умолчанию, целочисленные константы имеют тип данных 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 (улучшенный синтаксис для С++)
Другие языки программирования и технологии
Почему при делении дробных чисел пишет результат 0 на С++? x1=(b+pow(d,0.5))/2/a;
Потому что 1/2=0
А 1.0/2.0=0.5
Смекаешь?
А 1.0/2.0=0.5
Смекаешь?
переменные-то небось целочисленные да?
мужик вверху сказал тебе шоб ты использовал флоат
Похожие вопросы
- Сложное уравнение (ax+b)/(cx+d)=0 на Pascal
- Вопросик по Pascal. Есть переменные A,B,C,D. Как сделать так, чтобы при вводе A выводилось цифра 1, B - 2, C-3, D-4?
- Найти трехзначные числа a, b, c, все цифры которых различны и удовлетворяют уравнению a^2 – b^2 – c^2 = a – b – c.
- При делении отрицательного числа выводит не правильный ответ (assembler). Если беру числа 127 13 10, пишет переполнение
- Помогите написать на ассемблере програму для вычисления виражения y=(c-(d/2)+33 )/(2*a*a-1). c=5,d=6,a=3.
- Паскаль. Цикл While. Определить остаток от деления большего числа а на меньшее число b, не используя стандартные функции
- Деление отрицательного числа. Ассемблер
- Особенности арифметических операций в C++, деление отрицательных чисел, вопрос ниже
- Дано 4х число. Найти наименьшую нечетную цифру в числовой записи данного числа. Если вводим 0,то выводится 0.Что не так?
- построить программу вывода значения ф-ции y=А*sin(wx) в виде графика, где A=0,5, w=2, x на [0;п] ,на делфи.. . нужен текс