0

我正在编写一个 C# 控制台应用程序,该应用程序被用作与土地使用有关的大型项目的一部分。我的控制台应用程序需要使用每个条目的纬度和经度值对我的 CSV 文件中的条目进行分组。网格分组必须达到 0.002 度的特异性。

我发现了一些示例代码,它们会做类似的事情,但不是所需的特异性:

                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 语句中的数学方法以使用 0.002 度特异性?

非常感谢!

4

1 回答 1

1

也许是这样:

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,更正了愚蠢的错字。

于 2013-06-27T21:29:34.410 回答