//find square root of a number n till d decimal points
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n;int d;cin>>n>>d;
double x=n;int i=1;
while(i<=20){
float t=(x+n/x)/2;i++;x=t;
}
cout<<fixed<<setprecision(d)<<x<<endl;
}
アルゴリズムは正しいように見えますが、私はsetprecisionが自分の望んでいない番号を四捨五入すると思います。私の最終的な答えを四捨五入しないsetprecision()の他の代替手段ですか? INPUT 私には3.1623 が返されますが、回答は3.1622 と入力してください。また、10 7は私に小数点第4位の2を持つ3.1622777を与えます。C++で数の平方根を見つける
がhttp://stackoverflow.com/questions/19611198/finding-square-root-without-using-sqrt-function – cokceken
精度の点が丸い場合にTを決定することである:ここで、3.1623は3.1622777に近いです3.1622よりも大きいので、それは3に丸めても間違いではありません。良い例はpiです。3.1416として使用されますが、精度は3.1415926535 ...となり、どちらも正解です。より正確です。 – Adalcar
私は 'double t = .. ;最初に。 –