关于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);
#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);