关于float和double的问题?

修电视的攻城狮 2007-08-13 08:21:52
#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
...全文
138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
makewater 2007-08-13
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>

float digui(float x,int n)
{
float fac;
if(n==1) fac=(float)sqrt(n+x);
else fac=(float)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);
}
jixingzhong 2007-08-13
  • 打赏
  • 举报
回复
由于格式没有匹配,
结果是非规格化浮点数。
bargio_susie 2007-08-13
  • 打赏
  • 举报
回复
scanf("%f,%d",&x,&n);
————————————————————
scanf("%lf,%d",&x,&n);

printf("fac=%f\n",fac);
_____________________________________
printf("fac=%lf\n",fac);
我啃 2007-08-13
  • 打赏
  • 举报
回复
%f输入输出float类型
#lf 输入输出double类型

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧