| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 535 人关注过本帖
标题:关于“4.0/3.0”和“4/3”的问题
只看楼主 加入收藏
heimodao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:172
注 册:2011-4-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
关于“4.0/3.0”和“4/3”的问题
是这样的:
#include <stdio.h>
#define PI 3.14

int main()
{
int a;
scanf("%d",&a);
int sun=(4.0/3.0)*PI*(a*a*a);
int sun1=(4/3)*PI*(a*a*a);
printf("%d\n%d\n",sun,sun1);
return 0;
}
是不是前者隐式转化成了float型,而后者则腰斩了小数点?
搜索更多相关主题的帖子: return 小数点 
2011-04-23 13:28
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
收藏
得分:4 
前者不是转换成浮点数,而是转换成双精度数
后者整数相除肯定得到的是整数啊
2011-04-23 13:40
懂也不懂
Rank: 4
等 级:业余侠客
威 望:2
帖 子:73
专家分:224
注 册:2010-12-1
收藏
得分:8 
想说一下,因为你sun \ sun1你都是int那么不论你结果是什么,都将舍弃结果的小数位;
而像3.0之类的数字参与运算之后,编译环境会自动将结果先按double型对待,再根据你最后要求的输出数据格式进行强制类型转换;
同时需要注意,输出类型与定义的变量的类型应该也要是“输出类型<=定义类型”;
2011-04-23 14:15
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:5 
前者4.0/3.0是双精度型,运算后,强制转换为int型,后者是4/3本身就是int型,计算后还是int
2011-04-23 14:35
张春平
Rank: 3Rank: 3
来 自:北城
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2010-12-2
收藏
得分:3 
4/3=1
4.0/3.0=1.33333333.
2011-04-23 14:40
快速回复:关于“4.0/3.0”和“4/3”的问题
数据加载中...
 
   



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

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