免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4217 | 回复: 9
打印 上一主题 下一主题

请教CPU浮点运算精度问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-24 13:25 |只看该作者 |倒序浏览
最近有同事跟我提到一个问题:
在CPU进行浮点运算时,如果要求精度足够高的情况下,即小数点后为数足够多的情况下,每次运算得到的结果可能会不一样!!??

举个例子来说
A = 1 / 3;
B = 1 / 3 ;


1)  如果我们取较小的精度,比如小数点后取 3 位。
      那么  我们可以确定 A == B


2)  如果我们取较大的精度,比如小数点后取 3000 位。
      那么  CPU 实际运算后, 可呢给出现 A != B 的情况


对于第二个命题,我不是很理解,也没有查到相关资料,而且不能确定是否为  "TRUE"

还望有做过相关研究的朋友 确认 并 讲解 一下

谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-04-24 13:28 |只看该作者
你咋取到3000位的?

论坛徽章:
0
3 [报告]
发表于 2008-04-24 14:20 |只看该作者
这个…… 有实用价值么

论坛徽章:
0
4 [报告]
发表于 2008-04-24 14:52 |只看该作者
原帖由 net_robber 于 2008-4-24 13:25 发表
最近有同事跟我提到一个问题:
在CPU进行浮点运算时,如果要求精度足够高的情况下,即小数点后为数足够多的情况下,每次运算得到的结果可能会不一样!!??

举个例子来说
A = 1 / 3;
B = 1 / 3 ;


1 ...

这样A与B都会为0

论坛徽章:
0
5 [报告]
发表于 2008-04-24 15:22 |只看该作者
原帖由 lenovo 于 2008-4-24 13:28 发表
你咋取到3000位的?



3000位说的夸张了,抱歉

我只是想表达一下取道比较高的精度的时候

论坛徽章:
0
6 [报告]
发表于 2008-04-24 15:25 |只看该作者
原帖由 net_robber 于 2008-4-24 15:22 发表



3000位说的夸张了,抱歉

我只是想表达一下取道比较高的精度的时候

printf %f打印出来的最后一位,一般都不一样。

论坛徽章:
0
7 [报告]
发表于 2008-04-24 15:27 |只看该作者
比较浮点数相等一般是将两数相减然后看是否小于预设值。

论坛徽章:
0
8 [报告]
发表于 2008-04-24 15:56 |只看该作者
这样一个情况

进行多媒体压缩

同样的输入源,可能会出现每次压缩后,信噪比不一样

Why??


有同事解释说是因为编码中大量浮点运算结果误差引起的

我不太理解,想听听有没有其他解释

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2008-04-24 17:06 |只看该作者
原帖由 net_robber 于 2008-4-24 15:56 发表
这样一个情况

进行多媒体压缩

同样的输入源,可能会出现每次压缩后,信噪比不一样

Why??


有同事解释说是因为编码中大量浮点运算结果误差引起的

我不太理解,想听听有没有其他解释

那每次编码后的文件一样吗?

论坛徽章:
0
10 [报告]
发表于 2008-04-25 09:34 |只看该作者
假设是因为浮点问题引起的----信噪比的差别应该极其微小
比如1.0000001^2 和 1.0000002^2

是不是压缩算法引入了什么随机的因素
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP