免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ifreecoding
打印 上一主题 下一主题

C语言浮点数运算,讲述原理并总结一些案例 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2012-05-28 11:23 |只看该作者
本帖最后由 plp626 于 2012-05-28 11:48 编辑

底下研究过,所谓浮点数不能比较相等有原因; 但以下情况可以比较相等:

所比较的两个数是所在范围内可以被... 2^-2, 2^-1, 2^0, 2^1, 2^2, ... 线性组合表示出来的(每个基的系数范围是[-9,9]);

32位机,float型数据最多可表示 2^32个“精确数”,这些数的相等比较可以用 if(a==b) 来判等;

{1}. float a=1.75,  b=1.25; // a,b 都在精确数集合中,他们的和,差必在精确数集合中;
可以
if(a-b==0.5)  。。。。

{2}. float a=1.9, b=1.4; // a,b 都不在精确数集合中, 但他们的差在精确数集合中;
if(a-b==0.5) 。。。。
因为0.5是在32位“精确数”集合中;
第2中情况,会因为受32位范围限制,在a,b,期中之一处于32边界状态下,不成立,

但是,
float a=1.5, b=1.4;
if(a-b==0.1) 则是不可以的;
因为0.1不在32位“精确数”集合中

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
22 [报告]
发表于 2012-05-28 11:33 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
23 [报告]
发表于 2012-05-28 18:38 |只看该作者
不要揪细节,这不是教材。
有不同的意见,可以展开阐述自己的见解

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
24 [报告]
发表于 2012-05-28 19:10 |只看该作者
sacry 发表于 2012-05-23 10:10
但是我也觉得,如果你知道有IEEE浮点标准,也许就不会起这么个标题了。


因为不知道IEEE754而吵起来这事常见。但LZ肯定知道IEEE754:
ifreecoding 发表于 2012-05-22 19:23
... 略
C语言浮点数
... 略
ANSI/IEEE Std 754-1985标准
... 略


所以我就奇怪了:既然是在说IEEE754,干嘛要扣上C的帽子?
改为《IEEE754原理...》并在支持IEEE754的平台上写一些C的示例以演示这些原理等等。
精确了,想挑刺都没处下手。

sacry 发表于 2012-05-23 10:10
PS:发现有时候想找别人的逻辑错误挺难的。因为对方压根没有什么逻辑,找不到论点。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
25 [报告]
发表于 2012-05-28 19:32 |只看该作者
回复 24# OwnWaterloo


    OW居然又复出了?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
26 [报告]
发表于 2012-05-28 20:25 |只看该作者
回复 25# starwing83

啥叫复出?我说过退出么?

最近被haskell折腾了……  最终结果来说,除了cpp(C预处理器,不是C++),其他都还不算太坏……
erlang我就是因为看见它的macro几乎原样搬cpp就想吐……   结果haskell(至少是haskell实现)也将cpp搬过来了……  而且还不支持#与##……
这些个语言啊…… C里面优秀的东西不学,狗屎一般的语法与预处理器倒是都喜欢借鉴……

论坛徽章:
0
27 [报告]
发表于 2013-03-27 11:38 |只看该作者
强烈要求删除此贴,误人子弟,楼主都没有对自己发的帖子进行审核,其中很多地方需要指数方式表示,直接无视,严重抗议!

论坛徽章:
0
28 [报告]
发表于 2013-04-02 22:33 |只看该作者
谢谢楼主,个人觉得不错,赞一个

论坛徽章:
0
29 [报告]
发表于 2013-04-03 09:35 |只看该作者
研究、总结、分享的思路挺好的!
有没有人研究在有限精度下的计算优化或数据压缩?
比如存钱时,只需精确到分即可,能否压缩?如果计算更快?

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
30 [报告]
发表于 2013-06-07 15:57 |只看该作者
回复 16# sacry

哈哈 说得真好 支持支持
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP