鱼C论坛

 找回密码
 立即注册
查看: 1914|回复: 9

程序运行结果和自己理解的不一样,求助大家

[复制链接]
发表于 2013-8-12 20:50:51 | 显示全部楼层 |阅读模式
1鱼币
#include"stdio.h"
void main()
{               
        int a=5;
        char c='a';
        float f=5.3;
        double m=12.65;
        double result;
        printf("a+c=%d\n",a+c);
        printf("a+c=%c\n",a+c);
        printf("f+m=%f\n",f+m);
        printf("a+m=%f\n",a+m);
        printf("c+f=%f\n",c+f);
        result=a+c*(f+m);
        printf("double=%f\n",result);
       
}
运行结果:
a+c=102
a+c=f
f+m=17.950000
a+m=17.650000
c+f=102.300000
double=1746.150019
Press any key to continue

其他的值都和我理解的一样,但是double的值为什么不是1746.150000,而是1746.150019?这是C语言的什么隐藏规则吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-12 20:51:38 | 显示全部楼层
我是新手 大家不要见笑啊  呵呵  问题有点低级
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-12 21:49:52 | 显示全部楼层
很简单C不能对浮点型数据给予完全正确的存储 会有一定的偏差 这是无法避免的
所以才有这么一道题目 :
如何判断一个浮点型数据是否为0
答案就是如果这个数如果在0.000001~0.000010(这个范围我忘了)
这个答案对不对把我也不大(你可以问度娘)反正就是这么个意思
浮点型数据是无法百分百正确的存储的
但误差绝对不会很大 如果你*1000W就另当别论了(*^__^*) 嘻嘻……
希望能帮到你
申请最佳啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-12 22:10:08 | 显示全部楼层
所以一般就不要写 i<5 如果i是浮点型的话很有肯是4.99999或5.00001 这样你知道的返回的结果一个是真一个是假所以可能会出现莫名其妙的错误
申请最佳答案啊(*^__^*) 嘻嘻……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-12 22:12:05 | 显示全部楼层
C中浮点型数据不能准确存储!比如你写i=60.0,可能输入的结果就是59.999998!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-13 14:17:24 | 显示全部楼层
这是double类型的精度问题。很正常。
http://user.qzone.qq.com/752647107/infocenter#!app=2&via=QZ.HashRefresh&pos=1362728500
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-15 16:37:59 | 显示全部楼层
正常的,双精度数就是这样,总会有那么0.0000010左右的偏差,你可以让他只输出小数点后三四位就可以看不出来的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-15 16:52:44 | 显示全部楼层
刚查了C语言的话浮点数一般是用IEEE 754标准定义的单精度浮点数与双精度浮点数。这些浮点数都是会损失精度的,在计算中会带来偏差,,,就是尾数的话不定的,也可以是说损失了,然后随便给了给数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-16 23:12:28 | 显示全部楼层
所以你最好用的估算,设置一个e-10什么的,然后判断fabs(f-5)<e-10什么的就可以理解为相等了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-31 09:57:51 | 显示全部楼层
帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表