【问题标题】:Why does +0.0 > -0.0 not hold for IEEE754 floats?为什么 +0.0 > -0.0 不适用于 IEEE754 浮点数?
【发布时间】:2017-01-30 19:03:30
【问题描述】:

IEEE754浮点数有signed zero的概念,即-0.0+0.0有两种不同的位模式,可以理解为单边限制:±0 := limδ→0 ±δ。该标准提供这些数字是为了与(有符号的)无穷大+Inf-Inf1./±0. 给出±Inf)保持一致,并且有一些证据表明它有助于减少舍入误差。

从限制中可以清楚地看出,虽然它们是不同的实体,但它们比较到相同的值,即+0.0 == -0.0 成立。但是,从限制来看,我也认为以下内容应该成立:+0.0 > -0.0,因为它适用于任何小的 δ。然而,这不是真的。由于此属性有时会很有用(例如,考虑区分两个零),标准委员会选择不这样做有什么令人信服的理由吗?

【问题讨论】:

  • 一个简单的解释是两个数不能同时相等,因为一个大于另一个。
  • 嗯,当然,这当然是有道理的。但是,它引出了一个问题:如果它们相同,为什么它们在操作中的行为会有所不同?换一种说法:为什么我们在某些情况下选择遵循极限的“数学规则”,而在其他情况下却不遵循?
  • people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF 上的 Kahan 文章开始阅读,然后点击您在那里找到的链接。

标签: floating-accuracy ieee-754


【解决方案1】:

Mathworld关于浮点运算底层数系统的文章引用了David Goldberg's famous paper,其中说,

虽然区分 +0 和 -0 有优势,但有时会让人感到困惑。例如,带符号的零破坏了关系 x = y ⇔ 1/x = 1/y,当 x = +0 和 y = -0 时,这是错误的。然而,IEEE 委员会认为使用零符号的好处大于坏处。

委员会有一个website 可以是searched 用于此类讨论,看起来带符号的零是永久争议的根源。

我在那里找不到任何关于您的特定问题的信息。但就像推测一样,他们可能想要简化硬件,这种比较只会产生集合 {less, Greater, equal, unordered} 的结果。允许 –0 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多