我一直在研究生成纬度和经度的应用程序,现在我需要能够找到最大值和最小值以确定数据集的上下限(和东/西限制)。 / p>
我一直在尝试使用Enumerable.Min方法对它们进行排序,但是它似乎不支持-100.0000以下的数字。
我的代码输入有误吗?如何以最有效的方式获得最大和最小的数字(列表中有大约150,000多个条目)。
public static void Main()
{
var arr = new string[]{"-88.98559", "-94.98711", "-95.79591", "-98.04622", "100.0001", "-101.57691", "-110.00614"};
var arrList = new List<string>(){};
foreach (var value in arr)
{
arrList.Add(value);
}
Console.WriteLine(arrList.Min().ToString()); //Result : 100.0001, should be -110.00614
Console.WriteLine(arrList.Max().ToString()); //Result : -98.04622
}
答案 0 :(得分:1)
看起来您的问题是您正在对字符串值使用最小/最大。如果您要比较字符串“ 100”与“ 90”,则“ 100”较小,因为1 <9。(与“ alice”与“ bob”没有区别。即使“ bob”较短,a float.parse(value)设置为列表。
答案 1 :(得分:0)
当然,简单的答案是将我的值存储为双精度(并调整生成的代码以不转换为字符串)。谢谢大家的推动!
public static void Main()
{
var arr = new double[]{-88.98559, -94.98711, -95.79591, -98.04622, 100.0001, -101.57691, -110.00614};
var arrList = new List<double>(){};
foreach (var value in arr)
{
arrList.Add(value);
}
Console.WriteLine(arrList.Min().ToString());
Console.WriteLine(arrList.Max().ToString());
}