c#-舍入十进制列表
作者:互联网
我试图找到一种更简单的方法来四舍五入List< List< decimal>>中的每个元素,并想知道是否有办法用Linq缩短它?
我已经尝试了几种方法,例如
List<List<Decimal>> masterList = dataSet
.Select(x => x.Values)
.ToList()
.Select(i => Math.Round(i, 2));
/// THIS GIVES AN EXCEPTION (CANNOT CONVERT FROM System.Collections.Generic.List<decimal> to 'double'
这是我目前的做法吗?
List<List<Decimal>> masterList = dataSet.Select(x => x.Values).ToList();
foreach (var list in masterList)
{
for(var i = 0; i < list.Count; i++)
{
list[i] = Math.Round(list[i], 2);
}
}
解决方法:
您应该使用Decimal.Round而不是Math.Round来完成工作:
masterList = masterList.Select(
x => x.Select(y => Decimal.Round(y, 2)).ToList()
).ToList();
用小数位数(2)编辑.同样,问题似乎出在LINQ语句中,而不是使用Math.Round或Decimal.Round.
不过,Decimal.Round是我首选的十进制形式,尤其是当十进制值需要转换为最短的int时.格式非常方便:Decimal.Round(val)
标签:rounding,linq,c 来源: https://codeday.me/bug/20191026/1933131.html