web-dev-qa-db-ja.com

科学表記法を使用しないC ++ coutの作成方法

double x = 1500;
for(int k = 0; k<10 ; k++){
    double t = 0;
    for(int i=0; i<12; i++){
        t += x * 0.0675;
        x += x * 0.0675;
    }
    cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;      
}

この出力

Bas ana:3284.78 Son faiz:1784.78 Son ana:5069.55

Bas ana:7193.17 Son faiz:3908.4 Son ana:11101.6

Bas ana:15752 Son faiz:8558.8 Son ana:24310.8

Bas ana:34494.5 Son faiz:18742.5 Son ana:53237

Bas ana:75537.8 Son faiz:41043.3 Son ana:116581

Bas ana:165417 Son faiz:89878.7 Son ana:255295

Bas ana:362238 Son faiz:196821 Son ana:559059

Bas ana:793246 Son faiz:431009 Son ana:1.22426e + 006

Bas ana:1.73709e + 006 Son faiz:943845 Son ana:2.68094e + 006

Bas ana:3.80397e + 006 Son faiz:2.06688e + 006 Son ana:5.87085e + 006

科学的な数字ではなく正確な数字で数字を表示したい。これどうやってするの?

55

つかいます - std::fixed ストリームマニピュレーター:

cout<<fixed<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
77
Tugrul Ates

上記のように、次のようにstd :: fixedを使用して問題を解決できます。

cout << fixed;
cout << "Bas ana: " << x << "\tSon faiz: " << t << "\tSon ana: " << x+t <<endl;

ただし、これを行った後、プロジェクトの任意の場所でフロートまたはダブルを印刷するたびに、この固定表記で番号が印刷されます。を使用して元に戻すことができます

cout << scientific;

しかし、コードがより複雑になると、これは退屈になる可能性があります。

これが、BoostがI/O Stream State Saverを作成した理由です。これにより、使用しているI/Oストリームが自動的に以前の状態に戻ります。関数呼び出し。次のように使用できます。

#include <boost/io/ios_state.hpp> // you need to download these headers first

{
    boost::io::ios_flags_saver  ifs( os );

    cout << ios::fixed;
    cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;

} // at this bracket, when ifs goes "out of scope", your stream is reset

BoostのI/Oストリームステートセーバーの詳細については、 公式ドキュメント を参照してください。

また、 Boost Format library をチェックアウトすることもできます。これにより、特に国際化に対処する必要がある場合に、出力が容易になります。ただし、この特定の問題には役立ちません。

20
Migi

次の構文をコーディングします。

std::cout << std::fixed << std::setprecision(n);

ここで、(n)は10進精度の数です。これで修正されるはずです。

2
Ahmad Mhd Yones

形式フラグを使用できます

詳細: http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/

2
muhoweb

Iostreamで使用できる書式設定演算子のコレクションがあります。ここに tutorial があります。

1
Charlie Martin