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";
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть поиск в коллекции:
Элементы двух массивов нужно поочередно занести в 3 массивК примеру массивы A(n) и B(n) нужно записать как C(a1, b1, a2, b2, a3, b3)
Пытаюсь создать тренировочный код, позволяющий выгружать с сайта wwwflickr