| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 284 人关注过本帖
标题:问题求解
只看楼主 加入收藏
自主学习
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
问题求解
#include<stdio.h>
void main()
{float i;
i=5/9;
printf("%.2f",i);
}
为什么输出的i的结果是0.00,求解!!!!
2012-11-09 19:36
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:15 
楼主你好,你定义的i是float型,而i=5/9当中5和9都是整型常量,所以5/9=0,最终会输出0.00
你可以把5改成5.0 或者 9改成9.0 试试就知道了
上述办法虽然可以输出正确结果,但会有一个警告
warning C4305: '=' : truncation from 'const double' to 'float'
这是因为5.0属于double类型,“=”将它转化为float型的i,可能会造成数据丢失之类的。
这时可以这样写:
i=float(5)/float(9);
float(5) 表示将5强制转换为float型
举个例子:
int(3.2) 的结果就是3

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-11-09 20:30
自主学习
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-9
收藏
得分:0 
回复 2楼 菜鸟一支
您的方法我试了,可是还是报错啊!!!!请看附件!
新建 Microsoft Office Word 文档.zip (53.06 KB)
2012-11-09 21:02
九零逆光1
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-11-3
收藏
得分:5 
#include<stdio.h>
 void main()
 {float i;
 i=5.0/9;
 printf("%f\n",i);
 }




我是这样写的  可以运行   楼主试试
收到的鲜花
  • 自主学习2012-11-09 21:16 送鲜花  1朵   附言:我很赞同
2012-11-09 21:07
自主学习
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-9
收藏
得分:0 
回复 4楼 九零逆光1
这样可以,我也试了,谢谢指教啊
2012-11-09 21:12
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
哦,我看了下,可能是环境不同造成的,我们用的是VC++,能够运行。
我对其他的版本不熟悉,没能帮你解决问题,不好意思哈。
论坛里高手很多,你再等等,应该会有高手来帮你解决的。

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-11-09 21:25
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:0 
4楼将5改成5.0的方法我在2楼也给楼主说过啊

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-11-09 21:27
遗矢的老人
Rank: 9Rank: 9Rank: 9
来 自:成都
等 级:蜘蛛侠
威 望:7
帖 子:325
专家分:1131
注 册:2012-7-20
收藏
得分:0 
以下是引用菜鸟一支在2012-11-9 20:30:12的发言:

楼主你好,你定义的i是float型,而i=5/9当中5和9都是整型常量,所以5/9=0,最终会输出0.00
你可以把5改成5.0 或者 9改成9.0 试试就知道了
上述办法虽然可以输出正确结果,但会有一个警告
warning C4305: '=' : truncation from 'const double' to 'float'
这是因为5.0属于double类型,“=”将它转化为float型的i,可能会造成数据丢失之类的。
这时可以这样写:
i=float(5)/float(9);
float(5) 表示将5强制转换为float型
举个例子:
int(3.2) 的结果就是3


你估计是搞C++的吧,C的强制转换不是这样的i=float(5)/float(9);,C++就有这种语法,C的强制转换是:(int)3.2,而且短的转换成长的就是自动转换,没必要整形强制转换成浮点型,这是自动转换过程


[ 本帖最后由 遗矢的老人 于 2012-11-9 21:32 编辑 ]
2012-11-09 21:30
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:0 
回复 8楼 遗矢的老人
恩,我用的是C++

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-11-09 21:33
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:0 
多错几次就知道了

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-11 10:46
快速回复:问题求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025574 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved