【发布时间】:2016-08-23 21:33:02
【问题描述】:
我阅读了浮点运算过程中发生的浮点和舍入错误。
我阅读了很多关于 IEEE 754-单精度/双精度格式的文章。 我知道有符号位,8(或)11位指数和23(或)52位有效位以及隐式前导位。
我也知道分母不是 2 的质因数的实数不能精确表示例如二进制中的 0.1 是 0.0001100110011.....
我理解0.1+0.1+0.1不等于0.3,因为舍入误差的累积。
0.5 也可以用二进制格式精确表示,因为它是 1/2。 但鉴于上述舍入误差的累积,我不明白,为什么 0.1+0.1+0.1+0.1+0.1 = 0.5 ?
【问题讨论】:
-
你是说你不在累积
0.1五次时会出现舍入错误? -
我很困惑是否在将 0.1 相加 5 次或任何其他导致二进制可精确表示的数字的算术运算时放弃累积误差,如果是这样,为什么?
-
仅当新值导致不准确性丢失时。
-
大概是您通过编写一些代码确定了这一点——如果您显示代码,我们可以更好地帮助您。
-
瑞克,它在 java boolean b= 0.1+0.1+0.1+0.1+0.1== 0.5//true b=0.1+0.1+0.1==0.3//false 我的任务为什么是原因为 false 给出的也不适用于 true 情况,这是在算术上累积的错误的舍入,不完全代表数字