txtファイルに小数を書き込んでいるのですが、小数点以下の桁数を合わせたいと思っています。
C言語では簡単に%.5fのようにしてやればできましたが、C++ではどうすればよいのでしょうか?
ostreamを用いています。fprintfを用いればできるのでしょうが、ostreamを用いて行いたいです。
よろしくお願いします。
C++で"%.5f"のようにフォーマットを指定する方法
Re: C++で"%.5f"のようにフォーマットを指定する方法
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << 3.14159265358979 << endl; // "%.6g"
cout.precision(5);
cout << 2.718281828 << endl; // "%.5g"
cout.setf(ios::fixed, ios::floatfield);
cout << 2.718281828 << endl; // "%.5f"
// manipulator を使う方法
cout << setprecision(3)
<< resetiosflags(ios::floatfield)
<< setiosflags(ios::scientific)
<< setw(12)
<< 3.14159265 << endl // "%12.3e"
<< 3.14159265 << endl; // "%.3e"
}
setprecision() などは、設定がずっと有効で、何度でも使用されます。
Re: C++で"%.5f"のようにフォーマットを指定する方法
回答ありがとうございます。できました!
setf(ios::fixed, ios::floatfield)を使う必要があるのですね。precisionを使うというのは分かったのですが、これだけだと思うようにいかずに困っていました。
また疑問が芽生えてしまったのですが、マニピュレータを用いずに、%9.6fのようなことはできますか?
また、メンバ関数を使って設定した場合、ずっと効果が続くようですが、リセットするにはどうすればよいのでしょうか?
setf(ios::fixed, ios::floatfield)を使う必要があるのですね。precisionを使うというのは分かったのですが、これだけだと思うようにいかずに困っていました。
また疑問が芽生えてしまったのですが、マニピュレータを用いずに、%9.6fのようなことはできますか?
また、メンバ関数を使って設定した場合、ずっと効果が続くようですが、リセットするにはどうすればよいのでしょうか?
Re: C++で"%.5f"のようにフォーマットを指定する方法
少しは調べましょうね。
D.9 書式付き出力
setfの逆、unsetfはあるので、これで解除してみればどうかと
D.9 書式付き出力
リセットに該当するものはないような。。ghffmj さんが書きました:リセットするにはどうすればよいのでしょうか?
setfの逆、unsetfはあるので、これで解除してみればどうかと
written by へにっくす
Re: C++で"%.5f"のようにフォーマットを指定する方法
標準ライブラリではありませんが、boost::formatは如何でしょうか。
または sprintf と ostream を併用するとか。
または sprintf と ostream を併用するとか。