Задать вопрос
@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;
}
  • Вопрос задан
  • 320 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл разработчик С++
    4 месяца
    Далее
Решения вопроса 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, то и значение получится не то, что ожидалось.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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