标题:程序输出结果跟预期结果不一样,为什么会这样呢?
只看楼主
ospf
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-7-9
 问题点数:0 回复次数:7 
程序输出结果跟预期结果不一样,为什么会这样呢?
#include<stdio.h>
int main(void)
{
    float i=1000000.1;
    printf("%f",i*0.01);
    return 0;
}

vc输出结果是10000.001250,为什么不是10000.001呢?
搜索更多相关主题的帖子: 结果 输出 float void 
2008-07-09 00:07
Rand
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-7-2
得分:0 
精度问题,0.1无法用二进制准确表示,你换成0.25(0.25=2^-2)就可以准确表示,你可以试试。
2008-07-09 00:40
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
得分:0 
LS正解~

编程小菜
2008-07-09 00:48
mingshendeshou
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-4-15
得分:0 
知道了

天生我才必有用。
2008-07-09 11:07
ospf
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-7-9
得分:0 
[bo][un]Rand[/un] 在 2008-7-9 00:40 的发言:[/bo]

精度问题,0.1无法用二进制准确表示,你换成0.25(0.25=2^-2)就可以准确表示,你可以试试。


我觉得应该也是精度问题,但是你说的还是有问题,你看下面的程序,为什么就能正确输出0.00100呢?
#include<stdio.h>

int main(void)
{
    float a=0.1;
    printf("%f",a*0.01);
    return 0;
}
2008-07-09 22:49
ospf
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-7-9
得分:0 
ding yi ge
2008-07-11 20:15
水中无月
Rank: 1
等 级:新手上路
帖 子:190
专家分:9
注 册:2008-6-17
得分:0 
float a=0.1;
改成
float a=0.1f;//注意“f”
这样就不需要a*0.01了,直接
printf("%f",a);

十里平湖霜满天,寸寸青丝愁华年,对月形单望相互,只羡鸳鸯不羡仙.
2008-07-11 20:48
ospf
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-7-9
得分:0 
感谢你的热心,但是我不明白你的意思,能否详细解释一下啊,谢谢!
2008-07-12 09:49



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




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

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