c++如何控制输出浮点数小数点后若干位
作者:songlu2333
这篇文章主要介绍了c++如何控制输出浮点数小数点后若干位问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
C++输出实现保留小数点后若干位
此方法主要参见《c++primer中文版》第五版670页的内容,使用<iomanip>标准库中的fixed操纵符与setprecision操纵符。
setprecision操纵符
setprecision操纵符可以指定浮点数的打印精度(总的位数),四舍五入且超过原有位数不会补零。
fixed操纵符
fixed操纵符可以改变流的状态以使用定点十进制表示浮点数,默认精度是小数点后6位,不足补零。
除此之外,iomanip中还有其他针对浮点数显示的操作符,例如scientific(科学记数法显示)、hexfloat(16进制显示),defaultfloat(恢复默认状态)。
fixed+setprecision
fixed系列的操作符会改变流的精度的默认含义,默认情况下,精度是指数字的总位数,包括小数部分位数与整数部分位数。
但在使用fixed、scientific、hexfloat后,精度值只控制小数部分,于是我们可以同时使用fixed与setprecision来控制小数点后的位数,下图设置小数点后5位输出浮点数。
c++输出浮点数值“保留n位小数”或“保留n位有效位”
我们经常在输出浮点数值时,需要保留3位 / 2位等小数,或者保留几位有效位。这里有一个比较好用的方法。首先需要包含 iomanip 头文件。
1、保留n位小数位
使用fixed 和 setprecision(n)方法,参数n表示保留的小数位个数。
#include <iostream> #include <iomanip> using namespace std; void main() { double PT = 3.14159267; //保留三位小数 cout << fixed <<setprecision(3) << PT <<endl; //保留三位有效位 // cout << setprecision(2) << PT <<endl; getchar(); }
结果:
2、保留n位有效位
只使用setprecision(n)方法,参数n表示保留的有效位个数。
#include <iostream> #include <iomanip> using namespace std; void main() { double PT = 3.14159267; //保留三位小数 // cout << fixed <<setprecision(3) << PT <<endl; //保留两位有效位 cout << setprecision(2) << PT <<endl; getchar(); }
结果:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。