设置cout显示数字的有效位数
编程题:
要求:编写一个函数实现sqrt()功能,题目中要求不能够使用任何库函数,所以只能够使用基本的运算符进行操作了。
思路:以下代码思路为---->使用二分法进行逼近。
代码如下:
/*
copy一次以上求一个数m的n次开方运算,函数实现
*/
#include <iostream>
using namespace std;
class MySqrt {
public:
double msqrt(double m, int n) {
double right = m;
double left = 0;
double mid = left + (right - left) / 2;
double tmp;
double last;
do{
tmp = m;
for (int ix = 0; ix < n - 1; ++ix) {
tmp = tmp / mid;
}
if (mid > tmp) {
right = mid;
}
else {
left = mid;
}
last = mid;
mid = left + (right - left) / 2;
} while ((mid - last > prec) || (mid - last < -prec));
return mid;
}
private:
const double prec = 10E-14;
};
int main()
{
MySqrt ms;
double m = 2;
double n = 10;
double result = 0.0;
result = ms.msqrt(2, 10);
cout.precision(13);//可以调整cout输出数字的有效位数
cout << result << endl;
system("pause");
return 0;
}
之前还没有见过使用cout.precision()函数来设置cout显示数字有效位个数的O-O。