Fortran Coder

查看: 9991|回复: 4
打印 上一主题 下一主题

[数值问题] 简单的减法,release和debug的计算结果为什么不一样?

[复制链接]

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2019-5-22 08:58:42 | 显示全部楼层
这都很正常呀。
因为计算机是二进制。

第一个问题:
如果你不太能理解二进制和十进制的实数转换。那么你可以想象一下三进制和十进制的转换。

1/3 对三进制( 0.1(3) )来说,是整的1位小数。但是对十进制来说,就是无限(循环)小数。

所以,计算机里采用二进制,双精度取了52位小数,所以是    log10(2^52)= 15.653 位有效数字。
计算机内部是只取了52位二进制小数的,只是转换成十进制显示的时候,多余的数字出现了。

第二个问题:
不同的优化算法下,相同的计算由于第53位或者更低的位数下的影响。浮点数计算会有舍入误差。
这也是很正常的事情。
这个问题的细节,你恐怕要去看CPU方面的手册了。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-5 05:56

Powered by Tencent X3.4

© 2013-2024 Tencent

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