格式化操作符
setprecision
-
浮点值可以四舍五入到若干位有效数或精度,这是出现在小数点前后的总位数。可以通过使用
setprecision
操作符 来控制显示浮点数值的有效数的数量。 -
注意,与
setw
不同的是,setprecision
不计算小数点。例如,当使用setprecision(4)
时,输出包含 4 位有效数,但是需要 5 个位置来显示;例如:double a = 12.3456; cout << setprecision(4) << a << endl;
会输出12.34
。 -
如果一个数字的值可以由少于
setprecision
指定的精度位数来表示,则操作符将不起作用。 -
下面的表显示了 setprecision 如何影响各种值的显示方式。
-
数 字 操作符 显示的值 12.56789 setprecision(3) 12.6 12.300 setprecision(6) 12.3 123.500 setprecision(5) 123.5 12.91010 setprecision(2) 13 -
如果有效数少于要显示的数字,则
setprecision
将舍入(四舍五入),而不是截断数字。 -
另外还需要注意的是,末尾的零将被省略。
-
与 setw 字段宽度不同的是,setprecision 的精度设置将保持有效,直到更改为其他值为止。
-
setw的作用:
cout << setw(6) << temp1 << endl;
、cout << setw(6) << temp2 << endl;
以 6 个字符的字段宽度打印,可以用setw实现右对齐效果; -
setw的设置宽度不会一直保持有效;
-
同样的,setw也会省略末尾的0;
-
如果一个数字太大,无法使用
setprecision
指定的有效数位数来打印,则许多系统(根据编译器)会以科学表示法的方式打印。 -
为了防止出现这种情况,可以使用另一个流操作符
fixed
,它表示浮点输出应该以固定点或小数点表示法显示。 -
fixed
操作符可能最常用的还是当它与setprecision
操作符一起使用时,setprecision
即可以以一种新的方式显示。它将指定浮点数字的小数点后要显示的位数,而不是要显示的总有效数位数。 -
注意设置了
fixed
之后,setprecision()
的精度值应该设置为小数的位数,而不是浮点数的有效数字位数; -
例如:
-
double a = 123.456;
-
cout << fixed << setprecision(2) << a << endl;
-
则会输出:
123.46
-
设置
fixed
之后不会省略末尾的0; -
同样精度值也是能保持有效的,直到更改为其他值为止。