c# - Linq 数据类型与 Double 的比较

标签 c# linq rounding

在我的 Linq 查询中,我有一个看起来像这样的 where 语句

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

值(value)观是

nw.XCoordinate = 4056.48751252685
currVio.XCoordinate = 4056.488

因此等于语句不起作用,最简单的舍入方法是什么?

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/

相关文章:

c# - Visual Studio 2013 的功能区设计器

c# - Tuple<X1,X2..>.Create 和 new Tuple<X1,X2..> 之间的优点/缺点是什么

远程计算机上的 C# 服务状态

c# - 需要有关 ASP.NET MVC 3 体系结构的一些指导

c# - 使用 Lambda 和 Func<> 的动态构造函数

c# - 通用自定义 linq 过滤器

r - 如何按百分比向量分布数字向量,对结果进行四舍五入,并始终获得与在 R 中开始时相同的总数?

javascript - JS 智能舍入小数

SQL Server 2008 : Why won't this round to two decimal places?

c# - 在 Newtonsoft.Json.Linq 中使用 Jobject 解析多个对象