/ 350
添加表情
遵守中华人民共和国的各项道德法规,承担因您的行为而导致的法律责任,
本站有权保留或删除有争议评论。 参与本评论即表明您已经阅读并接受上述条款。
全部评论 (共 8 条)
学习达人
LYMX2015 展开
#include<stdio.h>
main(){
int m,n;
float e,f;
e=26.3;
f=26.4;
m=(int)(e+0.6);
n=(int)(f+0.6);
printf("%d,%d\n",m,n);
}
运行后应该是26和27,为什么都是26呢?[失望]
2025年03月12日 07:23
0 回复
hdylnpu 讲师 展开
@ LYMX2015 你好,稍稍改动一下:n=(int)(f+0.600001); 这样就是27了。
这是因为,实数不是精确存储的。这充分说明,显示的数据是26.4和和0.6,事实上可能和26.4以及0.6差一点点。
2025年03月13日 18:26
@TA
学习达人
小恒无涯 展开
#include<stdio.h>
main(){
int a,b;
a=(int)(34.0/5+0.5);//(int) (float)或者不加结果都一样
b=(int)(31.0/5+0.5);(int) (float)或者不加结果都一样
printf("%d,%d\n",a,b);
}
除法运算只要实数运算,只要输出是%d,加不加(int)是不是都没关系
2025年02月21日 23:53
0 回复
hdylnpu 讲师 展开
@ 小恒无涯 你好,不是这样的,"%d"格式只能输出整数(含字符),不能输出实数(输出时乱码)。
同样“%f”格式只能输出实数,无法输出整数。比如 printf("%f\n",9); 输出结果失真。
2025年02月23日 20:18
@TA
自律清醒睿智 展开
老师讲的很详细,多种方法解决问题,这样以后遇见问题,就有多种解决方式。赞。!!!!就需要你这样的老师。感谢[赞]
2024年10月26日 22:26
0 回复
hdylnpu 讲师 展开
@ 自律清醒睿智 你好,感谢你的肯定,愿你日日进步。
2024年10月27日 04:19
@TA
打卡Lv1
T338190ua 展开
老师,为什么我打f=26.4 d=(int)(f+0.6)结果为26?

我试了好多次,这个小数根本就不计算进去。
2023年05月02日 19:09
2 回复
T549539ov 展开
@ hdylnpu 是不是以%f的形式输出就可以了
2023年08月24日 19:55
@TA
T-n1onbd4pb 展开
@ T338190ua #include"stdio.h"
main(){
float a;
int b;
a=26.4;
b=float(a+0.6);
printf("%d\n",b);
}
2023年05月04日 00:48
@TA
hdylnpu 讲师 展开
@ T338190ua 你好,你发现的是一个好问题,经试验,如果f的值为26.4001则结果为27。
这是因为浮点数无法精确存储,按 %f 输出时也是一个近似值。
可能是在实质上,26.4或者0.6 至少有一个不足的,可能只差很微小的数,但是求和之后也是没有到27,所以取整后为26。
26.1+0.9 26.2+0.8 取整后都是27。
2023年05月03日 20:31
@TA
学习达人
hbzwb001 展开
a=(int)(31.0/5+0.5);能不能写成a=int(31.0/5+0.5);有没有其他含义
2023年02月18日 21:07
1 回复
hdylnpu 讲师 展开
@ hbzwb001 你好,你给出的写法也可以。你问的问题属于C语言中的强制类型转换。
其格式为(数据类型)(表达式):意思是对表达式的结果进行取整并返回。
在原始语法上,数据类型左右的括号必不可少。
在早期版本的C编译程序中,不加括号是错误的,现在加不加括号都可以。
2023年02月20日 12:03
@TA
打卡Lv3
a663842 展开
老师,请问,您会出企业级的C++教程吗?
2024年07月10日 12:19
0 回复
hdylnpu 讲师 展开
@ a663842 你哈,暂时还没想过
2024年07月10日 20:23
@TA
我的成功之路 更多
V
特惠充值
联系客服
APP下载
官方微信
返回顶部