【问题标题】:set precision of digits before the decimal point?设置小数点前的数字精度?
【发布时间】:2014-02-08 00:50:15
【问题描述】:

我已经看过这个thread,但如果我使用 setfill('0'),它不会考虑使用负数。

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    //Code
    int num1;

    cin >> num1;

    cout << setw(5) << setfill( '0' ) << num1 << endl;

    return 0;
}

使用此方法,如果我输入“5”,它将显示为“00005”。 但是如果我输入 -5 它将显示为“000-5”

我怎样才能修复它以使输出为“-0005”?

【问题讨论】:

  • 这就是为什么我仍然更喜欢 printf() 掩码格式。 %05d 只是做正确的事。
  • @epx 无论出于何种原因,一旦您将变量的类型更改为short,您的版本就会损坏。但是,由于 C++11 可以实现类型安全的替代方案,例如 this library

标签: c++ precision cout iomanip


【解决方案1】:

“填充字符”用于将字段填充到指定宽度。默认情况下,这些字符被添加到左侧,这样输出将对齐。您可以使用std::left 进行left 对齐。对于数字,附加选项std::internal 将填充符号和实际数字之间的空格

cout << setw(5) << setfill('0') << internal << -42 << endl;

http://ideone.com/Pdsz3M

【讨论】:

  • 这个 C++11 还是 C++03 兼容?
  • @ThomasMatthews 适用于这两种标准。
猜你喜欢
  • 2011-10-03
  • 2018-06-21
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多