IEEE 754 如何定义相等?

How does IEEE 754 define equal?

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

如果我省略了 NaN、-0 等特殊值,IEEE-754 双浮点数是否相等,当且仅当它们具有相同的 64 位表示它们?

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

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

我看到很多关于如何用浮点数模拟数学等于的文档。如果根据 IEEE-754 表示和计算,他们都声称 10.12 != 6.0+4.12。如果我在 java 中使用 Double 对象执行此操作,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.

没有,有两个例外specifically listed in Double.equals documentation:

  1. NaN对应的两个Double对象相等;

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

根据 IEEE-754 double 的等式