rua*_*akh 11
假设一个大约0.00000000000000001,b是约0.00000000000000002,和Ç是1.然后一 - Ç和b - c ^将都等于-1.
(这是假设双精度,即64位值.对于更高精度的值,您需要添加更多的零.)
编辑添加说明:
如果我们忽略非规范化值而不是数值和无穷大等等,并且只是为了具体内容而专注于IEEE 754双精度浮点值,那么 - 就二进制表示而言,浮点值由符号位s(0表示正数,1表示负数),11位指数e(偏移量为1023,e = 0表示2 -1023,e = 1023表示2)组成.0,即1),和52位定点有效数m(表示超过二进制点的52个位置,因此它的范围从[0,1]有限精度).因此,表示的实际值为(-1)s ×(1 + m)×2 e -1023.
因为有效位数是定点的,并且具有固定的位数,所以精度非常有限.类似于1.00000000000000001的值和类似于1.00000000000000002的值对于超过小数的很多位置是相同的 - 比双精度有效位数可以容纳的位置多.
当你在非常大的数字和非常小的数字之间执行加法或减法时(相对于彼此:在我们的例子中,1是"非常大";或者,我们可以使用1作为非常小的值并选择非常大值为10000000000000000),得到的指数几乎完全由非常大的数确定,并且非常小的数的有效数必须适当地缩放.在我们的例子中,它除以约10 17 ; 所以它就会消失.有效数字没有足够的位来区分它.