巨兔12138 发表于 2020-6-6 20:22:19

变量在分别设为int型和double型的情况下,得到结果不同


#include<iostream>
#include<iomanip>

using namespace std;

int main()
{
        int a,b;
        double c, d;
        a = 1;
        b = 1;
        d = 0;
        c = 1;
        while ( (fabs(c))>1e-7 )
        {
                d += c;
                a = -a;
                b = b + 2;
                c = a / b;
        }
        d = 4 * d;
        cout << setiosflags(ios::fixed) << setprecision(6) << d;
        return 0;
}

上述把变量b设为int型得到结果为4.000000
把b设为double型时得到的结果就是3.141592
b在此代码中不就是一直加2加2加2吗,为什么要设成double型而不是int型呢
还请各位大神指教

sunrise085 发表于 2020-6-6 21:41:36

不是加法的问题,是除法的问题。c=a/b,若a和b都是int,除法就是两个整型相除,若a小于b,结果就是0。只要这两个数中有一个是浮点数,那就会都转为浮点数再进行除法运算。
页: [1]
查看完整版本: 变量在分别设为int型和double型的情况下,得到结果不同