【问题标题】:Display numbers with padding and a fixed number of digits in C++在 C++ 中显示带有填充和固定位数的数字
【发布时间】:2013-04-27 04:30:09
【问题描述】:

我想使用填充(如有必要)和固定位数来显示数字。例如,给定以下数字:

48.3
0.3485
5.2

像这样显示它们:

48.30
00.35
05.20

我正在尝试 std::fixed、std::fill、std::setw 和 std::setprecision 的组合,但我似乎无法得到我想要的东西。希望得到一些指导!

注意:0 填充并不是很重要,但我仍然希望对齐数字,以便小数点在同一列中。

【问题讨论】:

标签: c++ iostream iomanip


【解决方案1】:

很简单

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    cout << fixed << setprecision(2) << setfill('0');
    cout << setw(5) << 48.3 << endl;
    cout << setw(5) << 0.3485 << endl;
    cout << setw(5) << 5.2 << endl;
}

然而,写这样的代码让我向往printf

【讨论】:

  • 如果 setprecision 太高会中断。 setw 是否必须大于 setprecision + 3 之类的?
  • 如果你想要两个前导数字和一个小数点,那么是的,setw 必须 >= setprecision + 3。
  • 作为附加说明,我认为一个大问题是我(在该行的前面)使用std::left 设置对齐。这也会弄乱这个解决方案,所以我必须确保将其设置回 std::right 才能正常工作。
  • 虽然它确实让我想念printf,但我喜欢 C++ 方式,因为我可以将它应用到stringstream 并获得string 的输出
猜你喜欢
  • 2012-04-02
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
相关资源
最近更新 更多