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;