0

C ++(或boost lib)中有什么方法可以显示给定数字的小数部分吗?但我不想在小数部分打印尾随 0(例如1.000, 1.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.

4

1 回答 1

1

怎么样:

#include <cmath>
using namespace std;

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

不是很快,但想法是计算出 x 的整数部分需要多少位数,然后将您感兴趣的小数位数添加到其中。如果你真的很认真,你甚至可以编写自己的操纵器来做到这一点。

于 2013-10-02T12:33:42.270 回答