精度长双倍不如双倍

Precision long double worse than double

本文关键字:精度      更新时间:2023-10-16

当我使用long double时,我得到比使用double更差的精度。3.14159265358979323846264L在源代码中编写long double const是否很好,或者我应该添加L以外的东西?

编辑我解决了这个问题。

你没有得到更差的精度。

发生的情况是,当您打印出数字时,流库将截断显示的值。使用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";