为什么对于相等的数字,小于或等于返回false?

时间:2018-02-18 14:31:00

标签: c# debugging unity3d

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

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

有时它会按照它的设想运行,但有时会返回不正确的false值。我进入调试模式进行分析,我无法弄清楚为什么它会在30 <= 30的比较中返回false。我错过了什么?

enter image description here

2 个答案:

答案 0 :(得分:5)

您不应该将浮点数进行比较。

这篇MSDN文章专门描述了System.Single的情况。 {strong>比较精确度部分下的System.Single.Equals

答案 1 :(得分:1)

确保您所比较的数据类型相同,您可以在比较之前将它们转换为相同的数据类型。在您的情况下使用compareTo,因为单个类实现IComparable接口检查此链接https://msdn.microsoft.com/en-us/library/system.single(v=vs.110).aspx