不使用库函数,求一个数字的立方根,保留小数点后一位。
//二分法
#include<iostream>
#include<iomanip>
using namesapce std;
double getCubeRoot(double x)
{
if(x==-1 || x==0 || x==1) return x;
int flag=0;
double mid;
double low=1.0;
double high=x;
if(x<0)
{
flag=-1;
x=-x;
}
while(high-low>0.001)
{
mid=(low+high)/2;
double temp=mid*mid*mid;
if(temp==x) break;
else if(temp<x) low=mid;
else high=mid;
}
mid=(flag==-1)?(-mid):mid;
return mid;
}
int main()
{
double x;
cin>>x;
cout<<setiosflags(ios::fixed)<<setprecision(1)<<getCuberoot(x)<<endl;
return 0;
}