1. 默认情况

C++默认的浮点数输出

1
2
3
4
5
6
7
8
#include<iostream>
using namespace std;
int main(){
cout << 0.123456789 << endl;//0.123457
cout << 1.123456789 << endl;//1.12346
cout << 1.23456789 << endl;//1.2346
}

2. 前置补0

E.g:格式化输出时间HH:mm:ss。倘若时间不够10,则需要在前面补0。

  • 头文件iomanip

  • 输出控制符setw

    • 理解:set width设置输出宽度。
    • 作用范围:仅对后续的<<生效一次。所以输出一次用一次。
  • 输出控制符setfill

    • 理解:set fill character 设置填充的字符,不写参数的话默认是空格。
    • 作用范围:自设置之后的所有<<,直到下一个setfill才更改。所以用一次就好啦。
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
#include<iomanip>
using namespace std;

int main(){
int hour = 2;
int minute = 33;
int second = 0;
cout << setw(2) << setfill('0') << hour <<":"
<< setw(2) << minute <<":"
<< setw(2) << second << endl; //02:33:00
}

3. 保留有效位数

  • 头文件iomanip

  • 输出控制符 setprecision

    • 理解:可以设置输出精度。(总有效位数,包括整数部分)
    • 作用范围:同setfill,可以对后续的输出产生影响。
1
2
3
4
5
6
7
8
9
10
11
12
13
/////////////////////////测试示例都是分开测试。///////////////////////////
float t1 = 12345; //
cout << t1 <<" " << setprecision(4) << t1 << endl; //
//12345 1.234e+04 //
///////////////////////////////////////////////////////////////////////
float t2 = 1.2345; //
cout << t2 <<" " << setprecision(4) << t2 << endl; //
//1.2345 1.235 //
///////////////////////////////////////////////////////////////////////
float t3 = 0.12345; //
cout << t3 <<" " << setprecision(4) << t3 << endl; //
//0.12345 0.1235 //
///////////////////////////////////////////////////////////////////////

4. 保留小数

  • 头文件iomanip
  • 流操作符fixed
    • 理解:它表示浮点输出应该以固定点或小数点表示法显示。
    • 作用范围:之后所有。

fixed 操作符可能最重要的还是当它与 setprecision 操作符一起使用时,setprecision 即可以以一种新的方式显示。它将指定浮点数字的小数点后要显示的位数,而不是要显示的总有效数位数。而这通常正是我们想要的。
——摘自C语言中文网

1
2
3
4
5
6
7
cout << fixed << setprecision(4);	
float big = 12345;
cout << big << endl;// 12345.0000
float middle = 1.2345;
cout << middle << endl;// 1.2345
float mini = 0.12345;
cout << mini << endl;//0.1235