C++で"%.5f"のようにフォーマットを指定する方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ghffmj
記事: 14
登録日時: 13年前

C++で"%.5f"のようにフォーマットを指定する方法

#1

投稿記事 by ghffmj » 13年前

txtファイルに小数を書き込んでいるのですが、小数点以下の桁数を合わせたいと思っています。
C言語では簡単に%.5fのようにしてやればできましたが、C++ではどうすればよいのでしょうか?

ostreamを用いています。fprintfを用いればできるのでしょうが、ostreamを用いて行いたいです。

よろしくお願いします。

かずま

Re: C++で"%.5f"のようにフォーマットを指定する方法

#2

投稿記事 by かずま » 13年前

コード:

#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"
}
setw() は 1回使用されると、元に戻ります。
setprecision() などは、設定がずっと有効で、何度でも使用されます。

ghffmj
記事: 14
登録日時: 13年前

Re: C++で"%.5f"のようにフォーマットを指定する方法

#3

投稿記事 by ghffmj » 13年前

回答ありがとうございます。できました!

setf(ios::fixed, ios::floatfield)を使う必要があるのですね。precisionを使うというのは分かったのですが、これだけだと思うようにいかずに困っていました。

また疑問が芽生えてしまったのですが、マニピュレータを用いずに、%9.6fのようなことはできますか?
また、メンバ関数を使って設定した場合、ずっと効果が続くようですが、リセットするにはどうすればよいのでしょうか?

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: C++で"%.5f"のようにフォーマットを指定する方法

#4

投稿記事 by へにっくす » 13年前

少しは調べましょうね。
D.9 書式付き出力
ghffmj さんが書きました:リセットするにはどうすればよいのでしょうか?
リセットに該当するものはないような。。
setfの逆、unsetfはあるので、これで解除してみればどうかと
written by へにっくす

ghffmj
記事: 14
登録日時: 13年前

Re: C++で"%.5f"のようにフォーマットを指定する方法

#5

投稿記事 by ghffmj » 13年前

かずまさん、へにっくすさんありがとうございました。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: C++で"%.5f"のようにフォーマットを指定する方法

#6

投稿記事 by beatle » 13年前

標準ライブラリではありませんが、boost::formatは如何でしょうか。
または sprintf と ostream を併用するとか。

閉鎖

“C言語何でも質問掲示板” へ戻る