在将数学公式应用到新列表中时,如何保持精度
本文关键字:精度 何保持 列表 数学公式 应用 新列表 | 更新日期: 2023-09-27 18:30:13
这个列表有5个对象,如果我用第二个对象[0]-[1]减去第一个对象,并将其放入一个新的列表中,它就可以工作了。但看看这个:[2]-[3],[4]-[5]=?请注意,我有[4]作为我的第五项,但我没有"第六项":[5]因为这个列表只有5项,我要减去什么?我会得到错误/异常吗?
var wqat = 1.1;
var rat = .2;
var eat = .8;
var baat = 1.2;
var baat2 = 1.8;
List<double> test = new List<double>();
List<double> theOneList = new List<double>();
theOneList.Add(wqat);
theOneList.Add(rat);
theOneList.Add(eat);
theOneList.Add(baat);
theOneList.Add(baat2);
theOneList = theOneList.OrderByDescending(z => z).ToList();
for (int i = 0; i < 5; i++)
{
test.Add(theOneList[i] - theOneList[i + 1]);
Console.WriteLine(test[i]);
}
我在尝试减法时遇到了一个系统超出范围的异常,我试图实现的一个可能的解决方案是,如果列表是"奇数",那么只需将"0"添加到列表中,它就会使其成为偶数个对象,这样我就可以一次平和地减去2个数字。
以上评论摘要:
var wqat = 1.1;
var rat = .2;
var eat = .8;
var baat = 1.2;
var baat2 = 1.8;
// Add's are hard to read
List<double> theOneList = new List<double>() {
wqat, rat, eat, baat, baat2
};
// Inplace sorting, "-" for the descending order
theOneList.Sort((x, y) => -x.CompareTo(y));
// Or (worse) Linq, do not forget to assign the result
// theOneList = theOneList.OrderByDescending(z => z).ToList();
List<double> test = new List<double>();
// No magic numbers (i.e. 4) - no pesky out of range exceptions
for (int i = 0; i < theOneList.Count - 1; ++i)
test.Add(theOneList[i] - theOneList[i + 1]);
// Output (mix output and algorthim is not a good idea)
Console.Write(String.Join(Environment.NewLine, test));
尝试
for (int i = 0; i < theOneList.Count - 1; ++i)
{
test.Add(theOneList[i] - theOneList[i + 1]);
Console.WriteLine(test[i]);
}
以避免索引超出范围