如何创建一个C#控制台应用程序网格,将CSV条目按纬度和经度分组?
我正在编写一个C#console应用程序,它是一个与土地使用有关的大型项目的一部分。我的控制台应用程序需要使用每个条目的纬度和经度值对CSV文件中的条目进行分组。网格分组必须为.002度 我发现一些示例代码将执行类似的操作,但与所需的特定性不同:如何创建一个C#控制台应用程序网格,将CSV条目按纬度和经度分组?,c#,csv,mapping,console-application,C#,Csv,Mapping,Console Application,我正在编写一个C#console应用程序,它是一个与土地使用有关的大型项目的一部分。我的控制台应用程序需要使用每个条目的纬度和经度值对CSV文件中的条目进行分组。网格分组必须为.002度 我发现一些示例代码将执行类似的操作,但与所需的特定性不同: foreach (string[] row in reader) { lat = Decimal.Parse(row[latIndex]); lng = D
foreach (string[] row in reader) {
lat = Decimal.Parse(row[latIndex]);
lng = Decimal.Parse(row[lngIndex]);
//TODO: do math to allow for percision of .002 rather than .001 like
I'm doing here
gridID = (Math.Round(lat, 3) * 10000) + Math.Round(lng, 3);
if (!grids.TryGetValue(gridID, out totals)) {
totals = new ALUGridTotals() {
lat = lat,
lng = lng
};
grids.Add(gridID, totals);
}
本质上,我的问题是如何修改gridID语句中的数学方法以使用.002度的特殊性
多谢 也许是这样:
private static double WeirdRounding(double n)
{
int temp = (int)(Math.Round(n, 3) * 1000);
return temp % 2 == 0 ? (double)temp / 1000 : ((double)temp + 1) / 1000;
}
如果结果不“均匀”,我就把它收起来
编辑:替换为int,更正了愚蠢的打字错误。可以使用int而不是double吗?