C++中“控制浮点数值显示”涉及的控制符setprecision()、fixed、scientific的相关用法
setprecision():
setprecision是一个计算机函数/控制符,使用setprecision(n)功能是控制输出流显示浮点数的有效数字个数。其中n为需要输出的浮点数值的位数。C++默认的流输出数值有效位数是6。
该控制符是在头文件iomanip中定义的对象。 使用控制符时可将其直接插入流中。
示例1:
#include
#include
using namespace std;
int main(){
cout<
}
1
2
3
4
5
6
7
8
9
10
11
分析:
cout<
该行代码的运行结果最后一位会自动发生四舍五入转换。
cout<
该行代码的运行结果用科学表示法来表示。 由此可见,如果一个数字太大,无法使用 setprecision
指定的有效数位数来打印,则许多系统会以科学表示法的方式打印输出。为了防止出现这种情况,可以使用另一个流 *** 作符fixed,它表示浮点输出应该以固定点或小数点表示法显示
fixed
表示浮点输出应该以固定点或小数点表示法,即,设置定点小数表示法
示例2:
#include
#include
using namespace std;
int main(){
cout<<123456789.12<
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
分析:
cout<<123456789.12<
cout<
可见,流 *** 作符fixed可以防止出现打印输出的时候以科学表示法来表示
但是,观察发现,最后两行代码并没有应用fixed,但是还是可以出现和应用fixed时候的效果,说明:倒数第三行代码中的fixed的效力保留到后面的流中。
注意:
fixed和setprecision只要使用之后,就会一直起作用,即其效力会一直保留。
3、如果fixed和setprecision(n)合用,可以控制小数点右边的数字个数。
示例3:
#include
#include
using namespace std;
int main(){
cout<
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
4、**如果scientific和setprecision(n)合用,可以控制指数表示法的小数位数。**scientific是设置指数方式的小数表示法。
示例4:
#include
#include
using namespace std;
int main(){
double amount = 22.0/7;
cout< cout<
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
分析:
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6。第2行输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待。第 3~6 行输出按设置的有效位数输出。
第7行输出是与 fixed合用,所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。
第 8行输出用 scientific 来表示指数表示的输出形式。其有效位数沿用上次的设置值8。
总结:
1、在普通表示的输出中,setprecision(n)表示有效位数。
2、在确定表示的输出中,即和fixed连用的时候,setprecision(n)表示小数位数。
3、在指数形式输出时,即和scientific连用的时候,setprecision(n)表示小数位数。
4、小数位数截断显示时,进行四舍五入处理。
5、注意 *** 作符的效力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)