На данный вопрос уже ответили:
Я начинающий в с++. Решал задачи на операторах if else Есть 2 математических задач. 1-ую выводит. а 2-нет.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float x;
cout << "y=";
cin >> x;
if (x>2.3)
{
cout << (2.7 + (-0.27))*((2 * 2.7 - 3 * (-0.27)) + 1) << '\n';
}
if (x >= 2.3) {
cout << exp(6.21) + sin(6.21)<<'\n';// Тут выбран 2.3
}
system("pause");
return 0;
}
В-общем когда ввожу в stdin значение 3 выводит ответ на 1 операцию = 17.520320.... а когда ввожу 2.3 выводит только y=
. В чем я ошибся?
Ну не умеет компьютер представлять числа с плавающей точкой абсолютно точно!
Ваше 2.3 внутри превращается в 2.2999999523162841797... Потом преобразуется для сравнения в double
, ну, а константа 2.3, написанная вами в программе, имея тип double
, уже равна 2.2999999999999998224, т.е. больше введенного вами значения...
Вот если вы напишете doble x
, то тогда ваше 2.3 превратится в то же представление, что и литерал 2.3
в программе, и равенство сработает.
Но в общем случае сравнивать на равенство числа с плавающей точкой - занятие нездоровое.
В проекте (многоагентная система для работы с потоком разнотиповых данных в реальном времени) используется многопоточность из стандартной...
Программа должна считывать массив из файла и искать в нём минимальный элемент, но что-то не получается нормально считать сам массивВ чем...
Возможно ли через функцию CreateFile установить пароль на PhysicalDrive1, те
Задача состоит в том, что нужно найти в графе размера N(кол-во вершин) вершинное покрытие размера KАлгоритм работает следующим образом: