C ++如何显示小数部分的确切数字

时间:2013-10-02 12:20:32

标签: c++ iomanip boost-format

在C ++(或boost lib)中是否有任何方法可以显示小数部分的给定数字位数?但我不想在小数部分打印尾随0(例如1.0001.500)。看这个案例:

cout << std::setprecision(3) << 5.0/7.0 << endl;    //  0.714
cout << std::setprecision(3) << 12.0/7.0 << endl;   //  1.71
cout << std::setprecision(3) << 7.0/7.0 << endl;    //  1
cout << std::setprecision(3) << 10.5/7.0 << endl;   //  1.5

问题是setprecision以不同的方式打印第1行和第2行,我希望这两行都打印0.7141.714。并且仍然保留第3行和第4行11.5

1 个答案:

答案 0 :(得分:1)

如下:

#include <cmath>
using namespace std;

cout << setprecision(ceil(log10(floor(x))+3) << x;

不是很快,但想法是弄清楚x的整数部分需要多少位数,然后添加你感兴趣的小数位数。如果你真的认真对待它,你甚至可以编写自己的操纵器。