关于float和double的有关问题

关于float和double的问题?
#include <stdio.h>
#include <math.h>

float   digui(float   x,int   n)
  {
        float   fac;
if(n==1)   fac=sqrt(n+x);
else   fac=sqrt(n+digui(x,n-1));
return   fac;
  }

  main()
  {
        int   n;
float   x,fac;
printf( "Input   x   n: ");
scanf( "%f,%d ",&x,&n);
fac=digui(x,n);
printf( "fac=%f\n ",fac);
  }
上面的程序中有的变量和函数定义成float型,运行结果如下:
Input   x   n:3.1,15
fac=4.388259
Press   any   key   to   continue

当把上面所有的float改成double型,运行结果就出错。结果如下:
Input   x   n:3.1,15
fac=-1.#IND00               //结果变成了这个
Press   any   key   to   continue

请高手解释下这是哪里的问题?
用的编译器是visual   c++   6.0

------解决方案--------------------
scanf( "%f,%d ",&x,&n);
————————————————————
scanf( "%lf,%d ",&x,&n);

printf( "fac=%f\n ",fac);
_____________________________________
printf( "fac=%lf\n ",fac);