Cout длинный двойной выпуск

Итак, я работаю над проектом C ++. У меня есть переменная типа long double и ей присвоено значение типа «1.02»

Затем я пытаюсь использовать cout, чтобы напечатать его, и результат: -0

Я уже пытался использовать setprecision, и все, что я нашел, — это поиск проблемы.

Какое решение для этого?

Пример кода:

#include <cstdlib>
#include <iomanip>

using namespace std;

int main(int argc, char** argv)
{

cout.precision(15);
long double var = 1.2;
cout << var << endl;
return 0;
}

ОС: Windows 8.1 64 бит
Компилятор: minGW
IDE: NetBeans 8.0.2

3

Решение

Кажется, проблема с компилятором. Посмотрите здесь: http://mingw.5.n7.nabble.com/Strange-behaviour-of-gcc-4-8-1-with-long-double-td32949.html

использование printf или преобразовать значение вашей переменной в double прежде чем перейти к cout, (Кстати, вам нужна 80-битная точность?)

2

Другие решения

Это более простой способ, но ваша программа работала на моем компиляторе.

#include <cstdlib>
#include <iomanip>
#include <iostream>

using namespace std;

int main(int argc, char** argv)
{

std::setprecision(10);
long double var = 1.023563457578;
cout << var << endl;
return 0;
}

Я надеюсь, что это поможет вам увидеть, что ваш компилятор может действительно иметь проблемы.

Источник -> Ссылка на сайт

0

Я не вижу ничего плохого в коде. Я просто поместил его в стандартный формат, и он работает. Вот код, предполагающий, что вы разместили все.

#include <iostream>

using namespace std;

int main(){
long double var = 1.0202;
cout.precision(5);
cout << var << endl;
}

Надеюсь, это ответит на ваш вопрос.

Редактировать:
Постскриптум Короче, тем лучше, поэтому у меня есть лучшее решение (самоуверенное).

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
long double var = 1.0202;
//cout.precision(5);
cout << setprecision(5) << var << endl;
}

Я думаю, что этот лучше, так как он короче. Я также рекомендовал бы использовать printf, если вы выполняете более сложные десятичные операции, так как printf может выбирать, какие переменные (если у вас есть несколько) имеют десятичные дроби или сколько.

-1

Я только что понял проблему .. Это было включение cstdlib вместо iostream.

-3
По вопросам рекламы [email protected]