描述
计算一个数字的立方根,不使用库函数。
保留一位小数。
输入描述:
待求解参数,为double类型(一个实数)
输出描述:
输入参数的立方根。保留一位小数。
#include <iostream>
#include <iomanip>
#include<cstdio>
int main(){
double d;
std::cin >> d;
bool flag = false;
if(d < 0)
{
d = -d;
flag = true;
}
double low, high, middle;
if(d>=1)
{
low = 0;
high = d;
middle = (low + high) / 2;
}
else
{
low = d;
high = 1;
middle = (low + high) / 2;
}
while(abs(d / middle / middle - middle) > 0.1)
{
if(d > middle * middle * middle)
{
low = middle;
}
else
{
high = middle;
}
middle = (low+high)/2;
}
if(flag)
{
middle = -middle;
}
std::cout << std::fixed << std::setprecision(1) << middle<< std::endl;
return 0;
}