【问题标题】:Why does less than or equal return false for equal numbers? [duplicate]为什么小于或等于等于数返回假? [复制]
【发布时间】:2018-02-18 14:31:00
【问题描述】:

我有一个简单的函数,它返回 bool 值作为比较 2 个实体与 GravityRadius 字段之间的距离的结果。

public bool IsEntityPulledByGravity(IEntity entity)
{
    return Vector3.Distance(State.Position, entity.State.Position) <= GravityRadius;
}

有时它会按预期工作,但有时会返回不正确的false 值。我进入调试模式对其进行分析,但我无法弄清楚为什么它会返回 false 以比较 30 &lt;= 30。我错过了什么?

【问题讨论】:

    标签: c# debugging unity3d


    【解决方案1】:

    您不应该比较浮点数是否相等。

    这篇 MSDN 文章专门描述了 System.Single 的情况。 System.Single.EqualsPrecision in Comparisons 部分下。

    【讨论】:

      【解决方案2】:

      确保您要比较的任何内容都具有相同的数据类型,您可以在比较之前将它们转换为相同的数据类型。在您的情况下使用 compareTo 因为 Single 类 implelements IComparable 接口检查此链接https://msdn.microsoft.com/en-us/library/system.single(v=vs.110).aspx

      【讨论】:

      • 两者都是同一类型System.Single查看截图。
      • 使用comapreTo 代替等式运算符
      猜你喜欢
      • 2013-10-17
      • 2020-10-17
      • 2020-04-26
      • 2018-10-17
      • 2011-01-25
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多