浮点数乘法:a * 1.0 == a 保证?

Floating-point number multiplication: a * 1.0 == a guaranteed?

a是一个浮点数。 a * 1.0 == a 总是有保证吗?

是的。唯一的例外是当 aNaN 时,根据定义 NaN * 1.0 = NaN,但 NaN 不等于自身。但即使那样,你也可以争辩说双方的结果是一样的。但是,NaN 有效负载可能会有所不同,如果您关心的话。

它简单地遵循了 FP 算法的一般规则:结果应该像你有无限精度一样计算,然后向下舍入以适应最终格式。由于 a 是可表示的浮点数,因此将其乘以 1.0 的数学结果恰好为我们提供了一个被解释为无限精确的数字。舍入将其带回自身。因此,您可以保证 a * 1.0 == a,除了所讨论的退化 NaN 情况。