double b = 2.5, m = 3, a = 1.4e-3, j, y, z;
for (int i = 0; i < 3; i++) {
cout << "j = ";
cin >> j;
y = (m * j) / tan(a) - exp(10 * m);
z = 2 * y * b + sqrt(a + b);
cout << "y = " << y << "\n";
cout << "z = " << z << "\n";
}
Когда ввожу разные значения с клавиатуры, значения не меняются. Как испраить данную ошибку?
Второе слагаемое по порядку намного больше первого (при небольших значениях j), поэтому влияние первого слагаемого при точности вывода по умолчанию просто теряется.
Теряется оно при выводе небольшого количества значащих цифр, истинные значения отличаются. Однако при большей разнице в порядках и истинные значения сумм будут одинаковы (1e100 + 1.0 = 1e100) - из-за ограниченной точности вещественных чисел.
Вот так можно заметить различия:
cout << std::cout.precision(15)<<"y = " << y << "\n";
cout << std::cout.precision(15)<< "z = " << z << "\n";
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости