2011-07-16 11 views
2

このような形式で浮動小数点数を出力したいと思います。float <<整数部と浮動小数点の両方の精度を設定する操作

.56 

フロートをn桁に丸めるには、次の関数を使用します。

double round(double val, int precision) 
{ 
    std::stringstream s; 
    s << std::setprecision(precision) << std::setiosflags(std::ios_base::fixed) << val; 
    s >> val; 
    return val; 
} 

および出力に次の行固定長に先行ゼロを持つ任意の数。

setfill ('0') << setw(5) << number 

しかし、私は2を結合しようとすると、次の例のように、私は、一貫性のない長さで終わる:

8.2 => 008.2 
4.57 => 04.56 

私は何がしたいことは、このように出力されます:

8.2 => 08.20 
4.57 => 04.57 

は、あなたは私に返しstring myround (double d, intpart n, floatpart f)などの機能を表示することができます0

myround (1234.5, 5, 2) =>.50 
myround (1234.569, 5, 2) =>.57 

私は以前に尋ねられたイメージですが、内部検索エンジンを使用して見つけることができませんでした。

答えて

2

fixedマニピュレータは、私が思うトリックを行います、以下の私の例では、あなたが何を望むかを出力:

#include <iostream> 
#include <iomanip> 
using namespace std; 
int main(void) { 
    cout << setprecision(2) << setfill ('0') << setw(5) << fixed << 8.2 << endl; 
    cout << setprecision(2) << setfill ('0') << setw(5) << fixed << 4.57 << endl; 
} 

は自分にstringstreamにそれを入れて、それが動作するはずです。ただし、文字列がdouble値に再度変換されると、固定情報は失われます。私は文字列メソッドを使用してフロートを丸めるのは良い考えではないと思う。

関連する問題