1

を使用すると、を使用するlong doubleよりも精度が低下しdoubleます。 3.14159265358979323846264Lこれはソースコードで書くのに良いlong double constですか、それとも私は他のものを追加する必要がありLますか?

編集私は問題を解決しました。アルゴリズムをより正確に変更します。

4

1 に答える 1

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";
于 2011-10-25T15:57:52.587 に答える