使用cout输出控制小数位的方法

来源:互联网 发布:莫知我哀的莫的意思 编辑:程序博客网 时间:2024/05/03 23:26
网络上查询的代码为:

#include <iostream>#include <iomanip>using namespace std;int main( void ){const double value = 12.3456789;cout << value << endl; // 默认以6精度,所以输出为 12.3457cout << setprecision(4) << value << endl; // 改成4精度,所以输出为12.35cout << setprecision(8) << value << endl; // 改成8精度,所以输出为12.345679cout << fixed << setprecision(4) << value << endl; // 加了fixed意味着是固定点方式显示,所以这里的精度指的是小数位,输出为12.3457cout << value << endl; // fixed和setprecision的作用还在,依然显示12.3457cout.unsetf( ios::fixed ); // 去掉了fixed,所以精度恢复成整个数值的有效位数,显示为12.35cout << value << endl;cout.precision( 6 ); // 恢复成原来的样子.cout << value << endl; //输出为12.3457return 0;}

运行结果:
使用cout输出控制小数位的方法 - 零度的追逐 - 零度的追逐的博客
 总结:
  1.对于一个double型数据,输出的默认精度为6,其意义是当数据的位数小于6位数时,它会输出数据本身,当数据的位数大于6位时,它只会输出6位数。并且在输出时整数位的优先级大于小数位。当数字的整数部分大于6时,那么输出的数据会以整数值上数位较高的前6位为指数进行指数表示,并且这个指数表示遵循四舍五入,同时这个指数表示的数值读取出来以后的数据与原数据拥有同样多的整数位!(这里注意指数的表示数值在与1~10)
源代码:

#include<iostream>#include <iomanip>using namespace std;int main(){double a,b,c,d,e,f,g;a=12345; //不足6位数时只输出数值本身 b=12345.6; //满足数值是6位时也输出数值本身 c=123456; //满足数值是6位时也输出数值本身 d=1234.678; //在数据数位大于6位时,只输出6位数 e=123456.7; //并且在输出时整数位的优先级大于小数位。 f=1234560.12; /*当数字的整数部分大于6时,那么输出的数据会 以整数值上数位较高的前6位为指数进行指数表示*/ g=1234567.12; //并且这个过程遵循四舍五入运算cout<<a<<endl; //a=12345cout<<b<<endl; //b=12345.6cout<<c<<endl; //c=123456cout<<d<<endl; //d=1234.68cout<<e<<endl; //e=123457cout<<f<<endl; //f=1.23456e+006cout<<g<<endl; //g=1.23457e+006return 0;}

运算结果:
使用cout输出控制小数位的方法 - 零度的追逐 - 零度的追逐的博客
  2.注意这里的取位遵循四舍五入的原则。
  3.cout输出控制小数位的函数在头文件#include<iomanip>中,利用函数setprecision()改变精度,注意这里的精度指的是所有输出的位数,而不是指的小数位。(set 建立,precision 精度)(括号中填入你所需要的精度).
4.cout << fixed << setprecision(a)这个语句表示的是固定点方式的显示,所以这里的精度指的是小数位,即a指的是有多少位小数。(fix 定位于).
5.需要指明的是,假使在之前定义了精度,那么这个精度在此源代码中就是一直存在的,假使再次的语句说明,那么后面输出的数据也会按照此精度去输出。
6.cout.unsetf( ios::fixed );这个语句是消除前面语句中的fixed,即消除原先的固定点方式,而采用精度(即数值是多少,就输出多少位数)(这里还需要注意的是这个语句只能消除fixed,而不能消除前面与fixed一起的语句setprecision(a),所以以后的数据都会按照setprecision(a)的格式输出。
7.cout.precision( a ),将输出的格式变为精度为a的输出形式(这个应该也可以控制小数点的位数,可以直接用)
0 0