编程语言
首页 > 编程语言> > C#-与Double的Linq数据类型比较

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