在我的 Linq 查询中,我有一个如下所示的 where 语句

&& vio.Bows.Any(nw => nw.XCoordinate.Equals(currVio.XCoordinate)))

值是
nw.XCoordinate = 4056.48751252685
currVio.XCoordinate = 4056.488

因此 Equals 的语句不起作用,最简单的四舍五入方法是什么?
public double XCoordinate { get; set; }

最佳答案

您可以使用通常的方法来比较 double 的接近度,方法是计算绝对差,并将其与一个小值进行比较:

Math.Abs(x - y) < 1E-8 // 1E-8 is 0.00000001

例如,您可以在 LINQ 查询中使用这种方法,如下所示:
&& vio.Bows.Any(nw => Math.Abs(nw.XCoordinate-currVio.XCoordinate) < 0.001)

关于c# - Linq 数据类型与 Double 的比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16704405/

10-12 23:54