【发布时间】:2015-01-01 16:03:39
【问题描述】:
我有 2 个数字,x 和 y,它们是已知的并且精确地表示为浮点数。我想知道 z = x - y 是否总是准确的,或者是否会出现舍入错误。对于简单的例子,很明显:
x = 0.75 = (1 + 0.5) * 2^-1
y = 0.5 = 1 * 2^-1
z = x - y = 0.25 = 0.5 * 2^-1 = 1 * 2^-2
但是,如果我有 x 和 y 以使用 所有 有效数字并且它们具有相同的指数,该怎么办?我的直觉告诉我结果应该是准确的,但我希望看到某种证明。如果结果是否定的,有什么不同吗?
【问题讨论】:
-
您的问题标题和描述不匹配。特别是 - 如果指数相同,那么减法应该是精确的(没有证据 - 可能存在一些边界情况,但事实并非如此);如果指数不一样,那么一般不一样。
-
如果指数和符号相同,减法将是精确的。如果符号不同,则添加幅度,并且可以从最高有效位位置进行进位。最低有效位的 1 会导致舍入和不精确的结果。
-
@Arvo:我假设您的意思是我的“简单示例”和标题不匹配?不过好点,我将编辑示例。
标签: floating-point floating-accuracy