除非 IEEE 754 是 NaN、+/-0.0 或 +/-Infinity,否则将其自身相除是否保证结果恰好为 1.0?
同样地,它自己减去自己是否保证结果总是+/-0.0?
除非 IEEE 754 是 NaN、+/-0.0 或 +/-Infinity,否则将其自身相除是否保证结果恰好为 1.0?
同样地,它自己减去自己是否保证结果总是+/-0.0?
如果使用相同的文字值,将其除以自身并减去,是的,IEEE754要求产生最接近和一致的匹配。
x+y
总是具有相同的值:一个实现可能在一个地方计算所需格式的精度,但在另一个地方计算额外的精度。在这种情况下,(x+y) - (x+y)
可能是非零的。此外,相同数字的不同文字形式可能会转换为不同的浮点值。例如,在 C 中,4000e3
和 4e6
不需要具有相同的值。这些是编程语言问题,而不是 IEEE 7754 问题。 - Eric Postpischilfloat foo = ...; float one = foo/foo
这个表达式保证等于1.0f吗? - matthias_buehlmannfoo/foo
保证为 "1",原因如 Eric Postpischil 上面所述。但是,(x+y) - (x+y)
不一定总是 "0",对于每个编译器都是如此。请阅读本文的最后一节:“IEEE二进制浮点算术标准754的现状讲义”,作者 W. Kahan 教授:https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF - FoggyDay