解题思路:
float可存有效数位为7-8,超出存不进去。double可存15-16位有效数字
看a的输出 为1.00000001 虽然遇到了%.f保留小数点后9位,但是数字本身没有变化,可以认为,a的类型为double。 再看 b=a;这句代码的意思是把a的类型赋给b, 发生了隐式转换类型 ,b的输出结果为1.000000000,可判断在转换的时候发生了截断,把1截去了,只存了8位有效小数,后遇到了%.9f补0。 由此我们可以认为b的类型为float。
在发生隐式类型转换的时候,如果是小转大则补0 ,大转小则会把多余部分直接截去,不发生四舍五入
注意事项:
如果有写的不好的或者出错的地方可在评论区指出。
参考代码:
#include<iostream>
using namespace std;
int main(){
cout<<"F E"<<endl;
return 0;
}
验证代码:
#include<iostream>
#include<cstdlib>
using namespace std;
int main() {
double a = 1.000000001;
float b=a;
printf("%.9f %.9f\n", a, b);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复