2011-12-18 5 views

答えて

15

setfおよびprecisionを使用してください。

#include <iostream> 

using namespace std; 

int main() { 
    double f = 3.14159; 
    cout.setf(ios::fixed,ios::floatfield); 
    cout.precision(3); 
    cout << f << endl; 
    return 0; 
} 

これは示してい3.142

+0

ありがとうございました。それは私のために役立った。 – ozeron

+0

これは3.14159で動作しますが、13.14159では動作しません。あなたの解決策は、10未満の数字に対してのみ機能します。 – mantler

+0

@manlerそうです、私の元の投稿はありませんでしたが、最後のもの(11分前に編集したもの)は正しく機能します。私は小数点の前に2桁と3桁で確認し、3桁を期待どおりに出力します。 – dasblinkenlight

6

この1を出力し、 "13.141"

#include <iostream> 
#include <iomanip> 
using namespace std; 

int main(){ 
    double f = 13.14159; 
    cout << fixed; 
    cout << setprecision(3) << f << endl; 
    return 0; 
} 
4

あなたはiomanipヘッダを使用して小数点以下の桁(および他の多くのもの)の数を固定得ることができます。たとえば、次のように

#include <iostream> 
#include <iomanip> 

int main() { 
    double pi = 3.141592653589; 
    std::cout << std::fixed << std::setprecision(2) << pi << '\n'; 
    return 0; 
} 

意志出力:fixedsetprecisionの両方を使用すると、効果をローカライズしたい場合は、事前に情報を保存し、後でそれを復元することができ、永久ので、流れを変えること

3.14 

注意:

#include <iostream> 
#include <iomanip> 

int main() { 
    double pi = 3.141592653589; 

    std::cout << pi << '\n'; 

    // Save flags/precision. 
    std::ios_base::fmtflags oldflags = std::cout.flags(); 
    std::streamsize oldprecision = std::cout.precision(); 

    std::cout << std::fixed << std::setprecision(2) << pi << '\n'; 
    std::cout << pi << '\n'; 

    // Restore flags/precision. 
    std::cout.flags (oldflags); 
    std::cout.precision (oldprecision); 

    std::cout << pi << '\n'; 

    return 0; 
} 

それの出力は、次のとおり

3.14159 
3.14 
3.14 
3.14159 
+0

ストリーム設定を保存して復元する方法を示してくれてありがとう、非常に役に立ちます。 – bhaller

+0

この行を "using namespace std;"よりクリーンなコード –

+0

@Khaledには、コメントボックス内に収まりきらないほど複雑なものがあります:-)私は自分自身以外は明示的な名前空間を好む最も単純なプログラム、または少なくとも、ロット全体をインポートするのではなく、名前空間内の特定のアイテムを使用する*。しかし、その特定の議論は質問と私の答えに接しています。 – paxdiablo

関連する問題