如果给定 3 个 IEEE-754 浮点数 a、b、c,它们都不是 +/-INF 或 NaN,并且 a < b,则可以安全地假设 a - c < b - c 吗?或者,您能否提供一个此情况不正确的示例?
如果给定 3 个 IEEE-754 浮点数 a、b、c,它们都不是 +/-INF 或 NaN,并且 a < b,则可以安全地假设 a - c < b - c 吗?或者,您能否提供一个此情况不正确的示例?
编辑添加解释:
如果我们忽略非规范化值、非数字值、无穷大等,只关注IEEE 754双精度浮点数,以便有具体的东西来看,那么从二进制表示来看,浮点数由一个符号位s(正数为0,负数为1)、一个11位指数e(偏移量为1023,因此e=0表示2−1023,e=1023表示20,即1),和一个52位定点小数尾数m(代表二进制点后52个位置,因此它在[0,1)之间具有有限精度)。因此,该表示的实际值为(−1)s × (1 + m) × 2e−1023。
由于尾数是定点的,且具有固定的位数,因此精度非常有限。像1.00000000000000001和1.00000000000000002这样的值,在小数点后面有很多位是相同的,比双精度尾数能够保存的位数还要多。1
或 -1
和一个带符号整数的“逻辑”指数,但使用实际的符号位 0
或 1
和一个位运算指数可能更合理,需要从中减去 1023
。)唉,好吧。我认为这已经足够回答这个问题,但我会思考如何使其更精确。(或者,您可以随意自行编辑它。) - ruakh