标题:关于float 和int的一个问题
只看楼主
胡俊平
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-12
 问题点数:0 回复次数:11 
关于float 和int的一个问题
#include<stdio.h>
#define SUM 10000
int main()
{
   float amount, aver, total;
   int i;
   for (i = 1, total = 0; i <= 1000; i++)
   {
         printf("please enter amount:");
         scanf("%f", &amount);
         total = total + amount;
         if (total >= SUM) break;
         
   }
   aver = total / i;
   printf("num = %d\n aver = %10.2f\n total = f\n", i, aver, total);
   return 0;     
}
在输出函数total时,如果后面为%d,他的值显示为“0”
用float就是正确值,真是为什么,求能人指点!!!
搜索更多相关主题的帖子: total 1000 include please return 
2012-03-17 16:01
wsws23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
得分:0 
你的total定义为float型,而输出却为int型,高精度数在转换成低精度数时,在此题中,只取float 的前16位,10000小于2的16次方,所以在高8位中为0,所以输出为0.
2012-03-17 16:20
青梅煮酒
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2012-3-17
得分:0 
aver = total / i
这里需要注意一下
aver = total / (float)i
试一试



2012-03-17 16:27
我勒个去
Rank: 2
等 级:论坛游民
帖 子:21
专家分:20
注 册:2012-3-14
得分:0 
改用total=%g\n试试!
2012-03-17 17:29
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
得分:0 
无语中...

编程之路定要走完……
2012-03-17 18:10
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
得分:0 
格式要一致,int就有int的输出格式,float就用float的格式,这是规则

最基础的往往是你最容易忽略的!
2012-03-17 19:19
maya593
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-2-26
得分:0 
二楼正解
2012-03-17 20:46
jianyuling00
Rank: 3Rank: 3
来 自:琼州学院
等 级:论坛游侠
帖 子:89
专家分:177
注 册:2012-3-17
得分:0 
int为整形,%d是以十进制输出的意思,小数点是不输出的

float为浮点型,一般用%f的格式化输出,会精确到小数点后6位,你也可以在%f上加上精度,如%.2f,这样格式输出的时候就会精确到小数点后两位

申请的变量和输出的格式要对应,你以int申请,以%d格式输出编译不会错误,但是你的显示结果是会错误的
2012-03-17 23:16
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
得分:0 
LZ要按照c的规则编程,要成好习惯!
看了2楼的,貌似有道理,不过int和float都是4字节的,没有精度丢失的问题
2012-03-17 23:36
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
很无语

总有那身价贱的人给作业贴回复完整的代码
2012-03-18 00:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-363465-1-1.html




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

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