@dandropov95

Почему выводится некорректное значение вещественного числа?

Почему если считывать число как long double, то результат получается нормальным, а если считывать как просто double, то выводится не то что хотелось бы?

input 2 => output 8.000000 (%lf)

input 2 => output -79298408094324 ... .000000 (%f)

#include <stdio.h>
#include <conio.h>

double cube(double value);

int main(void)
{
	double number;

	scanf("%lf", &number); // %f

	printf("%f", cube(number));

	_getch();

	return 0;
}

double cube(double value)
{
	return value * value * value;
}
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему если считывать число как long double, то результат получается нормальным,
input 2 => output 8.000000 (%lf)

потому что в scanf %lf -- это не long double, а просто double. %f -- это float, а long double -- это %Lf. См. man scanf.
float и double обычно отличаются форматом представления, поэтому если вводить число не тем форматом scanf, то и значение получится не то, что ожидалось.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы