我有一个简单的函数,它将2个实体之间的距离与GravityRadius字段的比较结果返回bool
值。
public bool IsEntityPulledByGravity(IEntity entity)
{
return Vector3.Distance(State.Position, entity.State.Position) <= GravityRadius;
}
有时它会按照它的设想运行,但有时会返回不正确的false
值。我进入调试模式进行分析,我无法弄清楚为什么它会在30 <= 30
的比较中返回false。我错过了什么?
答案 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