На данный вопрос уже ответили:
Я начинающий в с++. Решал задачи на операторах 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 в программе, и равенство сработает.
Но в общем случае сравнивать на равенство числа с плавающей точкой - занятие нездоровое.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники