精度长双倍比双重差

时间:2011-10-25 15:12:54

标签: c++ double-precision long-double

当我使用long double时,我的精确度比使用double更差。 3.14159265358979323846264L在源代码中编写long double const是否合适,或者我应该添加L以外的其他内容?

EDIT 我解决了这个问题。我更准确地改变了算法。

1 个答案:

答案 0 :(得分:5)

你的精确度并没有降低。

当您打印数字时,流库正在截断显示的值。使用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";