关于平等:IEEE 754如何定义相同?

How does IEEE 754 define equal?

IEEE-754如何定义"常规"双浮点数相等?
Double.equal的java实现是否符合IEEE-754?

如果我省略像NaN这样的特殊值,-0等是IEEE-754双浮点数等于,当且仅当它们具有相同的64位代表它们时?

IEEE-754定义了如何将"10.12"的近似值在64位中表示为double。 IEEE-754定义了如何计算"6.0 + 4.12",通过表示64位的值以及如何导出代表结果的64位。我知道我收到的两个64位模式不一样。

我不知道,如果IEEE-754为那些仍然将它们定义为相等的64位模式定义了一些特殊的等同关系?

我看到很多关于如何使用浮点数等于数学的文档。如果根据IEEE-754表示和计算,它们都声称10.12!= 6.0 + 4.12。如果我在带有Double对象的java中这样做,java也声称这两个值不相等。我想知道java Double的相同操作是否符合IEEE-754。


If I leave out the special values like NaN, -0, etc. are IEEE-754 double floating number equal, if and only if they have the same 64bits representing them?

是。

I like to know if the equal operation of java Double is in accordance with IEEE-754.

不,Double.equals文档中特别列出了两个例外:

  • 对应于NaN的两个Double对象是相等的;

  • 对应于零和负零的Double对象不相等。

  • 原始Double上的等同符合IEEE-754。