c++输出精度控制

题目描述:

数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

输入描述:

输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。

输出描述:

对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

 

  这里涉及到一个输出精度的控制,我们知道在这C语言中,控制输出精度可以直接用以下代码。

printf("%.2lf\n",sum);

  在C++中输出控制精度需要用到std::ios_base::precison,即std::cout.precison()。这个函数是用来控制输出的有效位,如下所示

double n = 0.001010;
cout.precision(4);
cout << n << endl;

  这个的输出结果就是0.00101。从第一个1开始为第一个有效位,连续输出4个有效位,最后一位的0被省略。这并没有达到我们要设置小数点后位数的要求,所以在查阅了资料后发现结合std::fixed使用可以控制小数点后的位数,使用方法如下:

double n = 0.001010;
cout.precision(4);
cout << fixed << n << endl;

  这个的输出结果就是0.0010。

  需要注意的是 cout.precision(4); 后cout的精度一直都是4个有效位,若设置了fixed,就一直控制小数点后的位数。目前还没有消除precision的方法,只能重新设置成新的有效位,但是针对fixed可是通过cout.unsetf( ios::fixed );来消除。

posted @ 2018-07-30 11:27  12oz  阅读(5006)  评论(0编辑  收藏  举报