Точность длинных двойных хуже двойных - PullRequest
1 голос
/ 25 октября 2011

Когда я использую long double, точность получается хуже, чем при использовании double.3.14159265358979323846264L это хорошо, чтобы написать long double const в исходном коде, или я должен добавить что-то, кроме L?

РЕДАКТИРОВАТЬ Я решил проблему.Я изменяю алгоритм, чтобы быть более точным.

1 Ответ

5 голосов
/ 25 октября 2011

Вы не получаете худшую точность.

То, что происходит, - то, что, когда вы печатаете число, библиотека потока усекает отображаемое значение.Используйте std :: setprecision для получения определенной точности.

double        x = 1.0/3;
long double   y = 1.0/6;

// Prints out the precision
std::cout << "Limit: " << std::numeric_limits<double>::digits10 << "\n";
std::cout << "Limit: " << std::numeric_limits<long double>::digits10 << "\n";

// prints the numbers with max precision.
std::cout << std::setprecision(std::numeric_limits<double>::digits10) << x << "\n";
std::cout << std::setprecision(std::numeric_limits<long double>::digits10) << y << "\n";
...