C#-与Double的Linq数据类型比较
作者:互联网
在我的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)
标签:rounding,linq,c 来源: https://codeday.me/bug/20191123/2066264.html