joker-wz

题目描述:

数列的第一项为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 );来消除。

分类:

技术点:

相关文章:

  • 2021-11-28
  • 2021-10-16
  • 2022-02-04
  • 2021-12-26
  • 2021-06-15
  • 2021-12-29
  • 2018-06-13
  • 2021-09-16
猜你喜欢
  • 2021-11-22
  • 2021-11-30
  • 2021-12-25
  • 2022-02-02
  • 2021-04-02
相关资源
相似解决方案