![](/img/trans.png)
[英]How can I split/divide an integer number multiple times correctly in C#?
[英]How can I divide each element in a list by an integer? C#
所以我创建了一个包含双精度数的列表,是否可以用整数变量划分该列表中的每个元素?
List<Double> amount = new List<Double>();
只需使用修改后的内容创建一个新列表:
var newAmounts = amount.Select(x => x / 10).ToList();
与修改现有数据相比,创建新数据更不容易出错。
您可以使用foreach
迭代每个项目:
foreach(var item in amount)
{
var result = item / 3;
}
如果要将结果存储在新列表中,可以在循环内执行...
var newList = new List<double>(amount.Count); //<-- set capacity for performance
foreach(var item in amount)
{
newList.Add(item / 3);
}
...或者将Linq用于IEnumerable<double>
:
var newList = from item in amount select item / 3;
您还可以使用Linq扩展方法:
var newList = amount.Select(item => item / 3);
或者如果你想要一个来自Linq的List<double>
,你可以使用ToList()
:
var newList = (from item in amount select item / 3).ToList();
... 要么 ...
var newList = amount.Select(item => item / 3).ToList();
作为替代方案,您可以使用简单for
:
for (int index = 0; index < amount.Count; index++)
{
var result = amount[index] / 3;
}
这种方法将允许您进行适当的修改:
for (int index = 0; index < amount.Count; index++)
{
amount[index] = amount[index] / 3;
}
您也可以考虑使用Parallel LINQ(使用AsParallel ):
var newList = amount.AsParallel().Select(item => item / 3).ToList();
警告 :结果可能不正常。
这将利用多核CPU,通过并行运行每个项目的操作。 这对于大型列表以及对每个项目独立的操作尤其有用。
foreach
:易于阅读和书写,易于记忆。 还允许一些优化。 Linq
:如果你习惯了SQL,那就更好了,也允许延迟执行。 for
:执行操作需要较少的内存。 允许更多控制。 PLinq
:所有你喜欢的Linq,针对多核心进行了优化。 虽然需要谨慎一些。 当然,简单的方法是迭代列表并划分每个数字:
foreach(var d in amount) {
var result = d / 3;
}
您可以将结果存储在新列表中。
如果您想要修改同一个实例(而不是创建新的集合),请执行以下操作:
for (int i = 0; i < amount.Count; ++i)
amount[i] /= yourInt32Divisor;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.