为了账号安全,请及时绑定邮箱和手机立即绑定

这个题老提示floating point error,到底哪里错了啊?

这个题老提示floating point error,到底哪里错了啊?

慕尼黑5688855 2022-10-18 15:15:27
#include<stdio.h>double fun(double x);main(){double a,b;scanf("%f",&a);b=fun(a);printf("%f\n",b);}double fun(double x){double y;if (x<-1)y=x*x-1;elseif (x<=1)y=x*x;elsey=x*x+1;return(y);}
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

scanf("%f",&a);
%f代表是float类型,与定义的double类型不合。

查看完整回答
反对 回复 2022-10-24
?
波斯汪

TA贡献1811条经验 获得超4个赞

scan()函数中:%f对应是float类型,%lf对应的是 double类型
printf()函数中:%f即对应float类型也对应double类型

#include<stdio.h>
double fun(double x);
main()
{
double a,b;
scanf("%lf",&a);
b=fun(a);
printf("%f\n",b);
}

double fun(double x)
{
double y;
if (x<-1)
y=x*x-1;
else
if (x<=1)
y=x*x;
else
y=x*x+1;
return(y);
}

结果:
输入:10
显示:101


查看完整回答
反对 回复 2022-10-24
?
慕的地10843

TA贡献1785条经验 获得超8个赞

%f改成%lf看看

查看完整回答
反对 回复 2022-10-24
  • 3 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信