printf输出位数不对

问:一道求余弦函数近似值的题目。主函数中已经限制printf()输出是六位,为什么我运行输出结果是八位啊

img

题目:

img

裁判样式:

#include 
#include 

double funcos( double e, double x );

int main()
{    
    double e, x;

    scanf("%lf %lf", &e, &x);
    printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
    
    return 0;
}

/* 你的代码将被嵌在这里 */


自己的代码:


double funcos( double e, double x )
{
   double cosx=1;
   int j=1;//j表示阶乘
   double z=0;//z表示指数
    for(int i=1;;i++)
    {
        j=2*i*(2*i-1)*j;
        z=pow(x,2*i)*pow(-1,i);
        cosx=cosx+z/j;
        if(z/j-e)        
           break;
    }
    return cosx;
}

img

img

主函数中已经限制printf()输出是六位,为什么我的运行输出结果是八位

那就没招了啊,裁判程序出毛病了

输出才有所谓的位数的概念
而函数返回double则没有
但是你可以想想变通的方法,比如调用 round 四舍五入下