怎么计算一个非负实数的平方根呢?我找到了两种办法
1.
#include <bits/stdc++.h>
using namespace std;
int main()
{
double a,eps=0.0001,ams=0;//eps控制精度
int n;
cin>>a>>n;
while(ansans<a)
{
ans+=eps;
}
cout<<fixed<<setprecision(n)<<ans;//保留位数
return 0;
}
这样也行,只是有亿点点慢。。。。。。
2.
#include <bits/stdc++.h>
using namespace std;
double a,ans,s=100;
int d;
void sqareroot(double a,int d,int c,double x)//c必须为0,x必须为1,d为保留的精度
{
while(ansans<=a)//不知道这里为什么显示不出来星号,复制后要加上
{
ans+=x;//先算整数位
}
ans-=x;
if(c<d)//位数是否达到
{
c++;
sqareroot(x/10,d,c);//递归,继续算下一位
}
}
int main()
{
cin>>a>>d;
sqareroot(a,d,0,1);
cout<<ans;
return 0;
}
这样可快多了!
你学废了吗
c++平方根算法
于 2023-08-02 14:13:44 首次发布