| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:小问题 求解答
只看楼主 加入收藏
yixusuai
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2012-3-18
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:9 
小问题 求解答
#include
void main()
{
float x;
int i;
x=32767.0;
i=(int)x%3;
printf("x=%f,i=%d\n",x,i);
}
为什么结果是:x=32767.000000,i=1
可书里还说x仍为 float型,值仍等于32767.0
弄得我有点晕,求解释
2012-03-19 21:12
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
收藏
得分:7 
x的确是float类型,所以结果是32767.000000,你只要弄明白一点,float有几位小数部署你所控制的,如果你要限制小数位数可以这样输出printf("x=%0.1f,i=%d\n",x,i);
 
2012-03-19 21:24
yixusuai
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2012-3-18
收藏
得分:0 
那个float型的有效数不是6到7位吗,为什么……
2012-03-19 21:27
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
收藏
得分:0 
对啊!6~7位,所以你输出的是6位啊
2012-03-19 21:35
chenliangjs
Rank: 2
等 级:论坛游民
帖 子:34
专家分:89
注 册:2012-1-14
收藏
得分:7 
可以给小数部分加个限制。。。限制它输出几位。。。。
2012-03-19 21:41
星辰雁
Rank: 4
等 级:业余侠客
威 望:1
帖 子:93
专家分:275
注 册:2011-9-10
收藏
得分:7 
首先你这程序上就有一个非常明显的错误,不知道是不是你忘打了,
但这点还是要注意,因为这是习惯问题。
再说x只不过在程序中被强制转换了下,但最后还是以float型输出的,
因此它认为float型,而float的格式就是小数点后有6位,
但输出几位你可以控制,正如一楼所说。

不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做 ,因为CPU是为用户服务的,不是为我们程序员服务的!
2012-03-19 21:42
星辰雁
Rank: 4
等 级:业余侠客
威 望:1
帖 子:93
专家分:275
注 册:2011-9-10
收藏
得分:0 
#include"stdio.h"

不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做 ,因为CPU是为用户服务的,不是为我们程序员服务的!
2012-03-19 21:48
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
收藏
得分:0 
限制输出几位你自己决定,"%x.yf"中x和y是具体的整形数据,x表示数的总宽度,如果数的实际宽度大于x,那么按原样输出,如果x大于实际宽度,那么输出时在数的左端用空格填补,y为小数位数,如果实际小数位数大于y,那么按y的位数输出,如果y大于实际位数,填0不足
2012-03-19 21:56
yixusuai
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2012-3-18
收藏
得分:0 
哦哦,我懂了。谢谢各位
2012-03-19 21:59
yixusuai
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2012-3-18
收藏
得分:0 
回复 6楼 星辰雁
这个输出后不是11位有效数吗?
2012-03-19 22:15
快速回复:小问题 求解答
数据加载中...
 
   



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

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