double fat = 0.2654654645486684646846865584656566554566556564654654899866223625564668186456564564664564;
cout<<fat<<endl;
結果:
0.265465
7文字長くする必要がありますか?ダブルならそれ以上収納できると思った?
「ロングダブル」でも同じ結果が得られます。
double fat = 0.2654654645486684646846865584656566554566556564654654899866223625564668186456564564664564;
cout<<fat<<endl;
結果:
0.265465
7文字長くする必要がありますか?ダブルならそれ以上収納できると思った?
「ロングダブル」でも同じ結果が得られます。
によって使用されるデフォルトの精度が表示されているだけですiostream。
物事を改善するには、 を使用しますstd::setprecision()。
const int max_digits = std::numeric_limits<double>::digits10;
std::cout << std::setprecision(max_digits) << fat << std::endl;
ここには 2 つの問題があります。
他の回答では、これをstd::numeric_limits<double>::digits10
とにかく double は一定量の精度しか格納できないため、fat に割り当てられたほとんどの桁は破棄されます (ほとんどのマシンでは、double に最大 15 の有効数字が得られます)。
std::setprecision(std::numeric_limits<double>::digits10)最高の精度で使用
std::cout << std::setprecision(std::numeric_limits<double>::digits10) << fat << std::endl;
使用してcout.precision()ください。
 または、 and を使用std::numeric_limits< double >し  #include <limits>て float または double の最大精度を取得することもできます。
このSO 投稿を参照してください。
問題はcout、特定の小数点以下の桁数にデフォルト設定されている にあります。cout の精度を設定し、 a を追加しfixedて必要な精度を得ることができます
cout.precision(15);
cout << fixed << fat << endl;