gpt4 book ai didi

comparison - 有浮点比较 “anomalies”吗?

转载 作者:行者123 更新时间:2023-12-04 13:21:18 25 4
gpt4 key购买 nike

如果我比较两个浮点数,是否存在a>=b不等于b<=a!(a<b)a==b不等于b==a!(a!=b)的情况?

换句话说:比较是否总是“对称的”,这样我就可以通过交换操作数并镜像运算符来获得相同的结果?而且它们是否总是“可负的”,例如,将运算符取反(例如><=)等同于对结果应用逻辑NOT(!)?

最佳答案

假设IEEE-754浮点数:

  • a >= b始终与b <= a等效。*
  • a >= b等效于!(a < b),除非ab之一或两者均为NaN。
  • a == b始终与b == a等效。*
  • a == b等效于!(a != b),除非ab之一或两者均为NaN。

  • 更一般而言:三分法不适用于浮点数。而是,一个相关属性拥有[IEEE-754(1985)§5.7]:

    Four mutually exclusive relations are possible: less than, equal, greater than, and unordered. The last case arises when at least one operand is NaN. Every NaN shall compare unordered with everything, including itself.



    请注意,这并不是真正的“异常”,其原因是将算术扩展为以尽可能与实际算术保持一致的方式被关闭。

    [*]在抽象IEEE-754算法中为true。在实际使用中,由于进行扩展精度的计算(MSVC,我在找您),某些编译器在极少数情况下可能会导致违反此规则。现在,英特尔架构上的大多数浮点计算都是在SSE而不是x87上完成的,这不再是一个问题(无论如何,从IEEE-754的角度来看,它始终是一个错误)。

    关于comparison - 有浮点比较 “anomalies”吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3698952/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com