3
double fat = 0.2654654645486684646846865584656566554566556564654654899866223625564668186456564564664564;
cout<<fat<<endl;

結果:

0.265465

7文字長くする必要がありますか?ダブルならそれ以上収納できると思った?

「ロングダブル」でも同じ結果が得られます。

4

5 に答える 5

10

によって使用されるデフォルトの精度が表示されているだけですiostream

物事を改善するには、 を使用しますstd::setprecision()

const int max_digits = std::numeric_limits<double>::digits10;

std::cout << std::setprecision(max_digits) << fat << std::endl;
于 2012-06-12T12:45:26.180 に答える
3

ここには 2 つの問題があります。

  • 他の回答では、これをstd::numeric_limits<double>::digits10

  • とにかく double は一定量の精度しか格納できないため、fat に割り当てられたほとんどの桁は破棄されます (ほとんどのマシンでは、double に最大 15 の有効数字が得られます)。

于 2012-06-12T12:49:58.597 に答える
3

std::setprecision(std::numeric_limits<double>::digits10)最高の精度で使用

std::cout << std::setprecision(std::numeric_limits<double>::digits10) << fat << std::endl;
于 2012-06-12T12:46:37.317 に答える
0

使用してcout.precision()ください。
または、 and を使用std::numeric_limits< double >#include <limits>て float または double の最大精度を取得することもできます。
このSO 投稿を参照してください。

于 2012-06-12T12:58:51.437 に答える
0

問題はcout、特定の小数点以下の桁数にデフォルト設定されている にあります。cout の精度を設定し、 a を追加しfixedて必要な精度を得ることができます

cout.precision(15);
cout << fixed << fat << endl;
于 2012-06-12T12:46:29.687 に答える