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

xuh*_*dev 6 floating-point ieee-754

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

ali*_*ias 10

是的。唯一的例外是,根据定义,whenaNaNwhere NaN * 1.0 = NaN,但NaN比较时不等于其自身。但即便如此,你也可以说双方的结果都是一样的。但是,NaN如果您关心的话,有效负载可能会有所不同,如果您的系统区分安静 NaN 和信号 NaN,这可能会产生影响。

FP 算术的一般规则表示,应该像具有无限精度一样计算结果,然后使用给定的舍入模式进行舍入(如果需要)以适合最终格式。由于是一个可表示的浮点数,因此当将其解释为无限精确的数字时,将其精确a乘以数学结果1.0即可得到。a不需要舍入,因为a已经可以表示。因此,您可以保证a * 1.0 == a,除了所讨论的退化NaN情况之外。