Floating point 当你把负零和正零相加时,你应该得到什么?

Floating point 当你把负零和正零相加时,你应该得到什么?,floating-point,ieee-754,Floating Point,Ieee 754,未解决此意外事件,我很难找到解决此问题的最终IEEE-754文件。根据 两个符号相反的操作数之和(或 两个具有相同符号的操作数)正好为零,即该和的符号 (或差分)在所有舍入模式下均应为+,向舍入模式除外 –无穷大,在该模式下,该符号应为–。但是,x+x=x–(–x) 保留与x相同的符号,即使x为零 (第6.3节) 这适用于(+0)+(-0)情况,要求在大多数舍入模式下结果为+0,但在向无穷大舍入模式下结果为-0。1985年标准被撤销,并用2008年标准代替。2008年的措辞是“当符号相反的两个操

未解决此意外事件,我很难找到解决此问题的最终IEEE-754文件。

根据

两个符号相反的操作数之和(或 两个具有相同符号的操作数)正好为零,即该和的符号 (或差分)在所有舍入模式下均应为+,向舍入模式除外 –无穷大,在该模式下,该符号应为–。但是,x+x=x–(–x) 保留与x相同的符号,即使x为零

(第6.3节)


这适用于(+0)+(-0)情况,要求在大多数舍入模式下结果为+0,但在向无穷大舍入模式下结果为-0。

1985年标准被撤销,并用2008年标准代替。2008年的措辞是“当符号相反的两个操作数之和(或符号相同的两个操作数之差)正好为零时,除向圆负外,所有舍入方向属性中该和(或差)的符号应为+0;在该属性下,精确零和(或差)的符号应为+0−然而,x+x=x− (−x) 即使x为零,也保留与x相同的符号。”因此,除非我向下舍入,+0+-0=+0。但当我四舍五入时,它是+0+-0=-0。这个结果会被测试为负值,对吗?是的,@robertbristow johnson,只要“向下舍入”,你的意思和IEEE-754向无穷大舍入(1985年)和向负值舍入(2008年)的意思一样。这是电气工程师通常的意思。类似于
floor()
函数。这意味着删除2的补码的位。(我意识到IEEE 754不像2的补码,而是有符号的大小,所以“删除位”意思是向零舍入,但我的意思是总是向下舍入。有趣的是,你在向零舍入之前得到的数字是非负的,但测试会说它是负的。IEEE-754有一些愚蠢的地方。我可以想出一个更好的浮点标准。