How does IEEE-754 define equal for "regular" double floating point numbers? Is the java implementation of Double.equal in accordance with 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 .
1 回答
是 .
不,有两个例外specifically listed in Double.equals documentation:
NaN
对应的两个Double
对象相等;对应于零和负零的
Double
对象不相等 .原始
double
上的平等符合IEEE-754 .