在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.714
和1.714
。并且仍然保留第3行和第4行1
和1.5
。
答案 0 :(得分:1)
如下:
#include <cmath>
using namespace std;
cout << setprecision(ceil(log10(floor(x))+3) << x;
不是很快,但想法是弄清楚x的整数部分需要多少位数,然后添加你感兴趣的小数位数。如果你真的认真对待它,你甚至可以编写自己的操纵器。