这两段代码中的哪一部分返回更准确的答案?

时间:2019-01-04 16:29:06

标签: c++ codeblocks sqrt

因此,我试图以两种方式返回数字的平方根,我认为这没有太大不同。其中哪一个具有更高的准确性,为什么?据我所知第二个更好,因为我相信默认的“允许错误”(不确定如何调用)比我设置的变量“ eps”低得多:0.00001。那是对的吗?这与代码块,编译器或处理器本身有关吗?

第一种方法:

#include <iostream>
using namespace std;
int main()
{
    double a,b;
    double x;
    cin>>x;
    int nr=0;
    //double eps=0.00001;
    a=1;
    do
    {
        b=a;
        a=(b+x/b)/2;
        nr++; //used to keep track of number of steps made
    }while(a!=b);
    cout<<a;
return 0;
}

除了do ... while()条件之外,第二种方法是相同的

#include <iostream>
using namespace std;
int main()
{
    double a,b;
    double x;
    cin>>x;
    int nr=0;
    double eps=0.00001;
    a=1;
    do
    {
        b=a;
        a=(b+x/b)/2;
        nr++;
    }while(a-b>=eps || b-a>=eps);
return 0;
}

0 个答案:

没有答案