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

(入门级问题,不耽误时间,求大家帮忙)简单计算后,%f输出结果很奇怪

(入门级问题,不耽误时间,求大家帮忙)简单计算后,%f输出结果很奇怪

C
TheReal无无 2018-05-13 17:52:29
第一个打印结果为什么是0.000000,而不是1.000000呢?0+后面心算出来是1啊。而且改成了0.0+之后就是1.000000了。这两者有什么区别呢?如果说是因为0.0多了小数点的话,我又试了一下1+,结果是2.0000000,这说明就算两个数字没有小数点也能出来.0000000啊。第二个打印结果把%f换成%d了,能够准确说明这个式子算出的结果是1无误。求大神,感谢!!!!
查看完整描述

5 回答

?
困难00

TA贡献7条经验 获得超7个赞

你定义的变量是整型的,输出的时候就要用%d,要想输出小数要定义变量为浮点数。printf不会自动转换类型。至于输出了0应该和计算机储存方式有关,浮点数和整型数储存方式不同。想具体了解可以去CSDN或知乎上搜一下,有大神解释过。

查看完整回答
3 反对 回复 2018-05-13
?
码之力三段

TA贡献1条经验 获得超2个赞

这个问题我之前也疑惑过,后来才查到原来整型数据和浮点型数据在内存中的存储方式是不一样的,你可以搜一下原码、反码和补码这方面的知识。

查看完整回答
2 反对 回复 2018-05-13
?
慕田峪3667243

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

#include"stdio.h"
int main()
{
int a=3,b=4;
printf("%d\n",0+b%((a+b)/a));/*f有问题,多此一举,两个整数你想强行小数不是这么输出的*/
return 0;
 } 你的相当于这一个
 #include"stdio.h"
int main()
{
int a=3,b=4;
printf("%d\n",0+(b%(a+b))/a);/*这边你再改回%f还是输出0.00000*/
return 0;
 } 这是你说的一
 你这个


查看完整回答
1 反对 回复 2018-05-13
?
慕慕3294173

TA贡献3条经验 获得超0个赞

怎么说呢,就是当定义整形变量时,只需用2个字节储存int型数据,实型最少需要4个字符储存,不能直接转换吧,哎呀,我也不太明白


查看完整回答
反对 回复 2018-05-14
?
慕府将军

TA贡献7条经验 获得超0个赞

路过看看,同求结果

查看完整回答
反对 回复 2018-05-13
?
慕府将军

TA贡献7条经验 获得超0个赞

路过看看,同求结果

查看完整回答
反对 回复 2018-05-13
  • 5 回答
  • 2 关注
  • 2053 浏览

添加回答

举报

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