2017-09-20 3 views
0

浮動小数点を文字列に変換するときに、C++で10進数の後に固定されていない精度を設定する簡単な方法はありますか?C++ 10進数の後に固定されていない精度を文字列にfloat

1.00000 -> 1 
1.23456 -> 1.2 
12.3456 -> 12 
12.3000 -> 12.3 

それに追加されます何のstd ::固定されている:あることは何のstd ::てSetPrecision(2)ない

1.00000 -> 1.00 
1.23456 -> 1.20 
12.3456 -> 12.34 
12.3000 -> 12.30 

私が何をしたいです:

1.00000 -> 1 
1.23456 -> 1.23 
12.3456 -> 12.34 
12.3000 -> 12.3 
+1

私はそれを得ることはありません。あなたは固定精度を要求していませんか?例(この場合は2)?固定精度ではないとはどういう意味ですか? – datell

+0

浮動小数点を文字列に変換するコードを表示してください。 – KelvinS

+0

[mcve]を投稿してください。あなたが今持っているものとあなたが望むものとの間には明確なものがありません。 – wally

答えて

1

2小数点以下を切り捨て、デフォルト精度を使用します。

#include <iostream> 
#include <iomanip> 
#include <cmath> 

int main() 
{ 
    double vals[]{1.00000, 1.23456, 12.3456, 12.3000}; 
    for(auto i : vals) { 
     i = std::round(i * 100)/100; 
     std::cout << i << '\n'; 
    } 
} 

が生成されます

1 
1.23 
12.35 
12.3 
関連する問題