Потеря точности при умножении - C (СИ)
Формулировка задачи:
# include <stdio.h>
main () {
float x,y,s;
scanf ("%f %f", &x,&y);
s=x*y;
printf ("%f",s);
}42
Откуда нарисовались 42? Почему происходит такая жуткая потеря точности? Как эту проблему решают например при написании калькулятора?Решение задачи: «Потеря точности при умножении»
textual
Листинг программы
# include <stdio.h>
int main ()
{
double x,y,s;
scanf ("%lf %lf", &x,&y);
s=x*y;
printf ("%lf",s);
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл
- Объявляем переменные x, y, s типа double
- Считываем значения переменных x и y с помощью функции scanf, указывая формат %lf для считывания вещественных чисел
- Вычисляем значение переменной s как произведение x и y
- Выводим значение переменной s на экран с помощью функции printf, указывая формат %lf для вывода вещественного числа
- Завершаем программу с помощью оператора return 0