C# 将十进制列表四舍五入
我正试图找到一种较短的方法来舍入C# 将十进制列表四舍五入,c#,linq,rounding,C#,Linq,Rounding,我正试图找到一种较短的方法来舍入列表中的每个元素,并想知道是否有一种方法可以使用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.Collec
列表中的每个元素,并想知道是否有一种方法可以使用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 masterList=dataSet
.选择(x=>x.Values)
托利斯先生()
.Select(i=>Math.Round(i,2));
///这会产生异常(无法从System.Collections.Generic.List转换为“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);
}
}
List masterList=dataSet.Select(x=>x.Values.ToList();
foreach(主列表中的变量列表)
{
对于(var i=0;i
以下是一个使用LINQ的示例:
List<List<decimal>> list= new List<List<decimal>>();
list.Add(new List<decimal>(){ 1.501M,2.231M,3M});
list.Add(new List<decimal>(){ 4.505M,5M,3M});
list.Add(new List<decimal>(){ 1M,7M,8M});
var result = list.Select(x=>x.Select(y=>Math.Round(y,2)).ToList()).ToList();
foreach(var a in result)
{
foreach(var b in a)
{
Console.Write(b + "\t");
}
Console.WriteLine();
}
List List=新列表();
添加(新列表(){1.501M,2.231M,3M});
添加(新列表(){4.505M,5M,3M});
添加(新列表(){1M,7M,8M});
var result=list.Select(x=>x.Select(y=>Math.Round(y,2)).ToList()).ToList();
foreach(结果中的var a)
{
foreach(a中的var b)
{
控制台。写入(b+“\t”);
}
Console.WriteLine();
}
您应该使用十进制.Round
,而不是数学.Round
,来执行以下操作:
masterList = masterList.Select(
x => x.Select(y => Decimal.Round(y, 2)).ToList()
).ToList();
使用小数位数(2)编辑了。此外,问题似乎出现在LINQ
语句中,而不是使用Math.Round
或Decimal.Round
Decimal.Round
是我对Decimal
的首选,尤其是当Decimal
值需要转换为最短的int
时。格式非常方便:Decimal.Round(val)
他可以教我们数学。同样,他只是在列表中使用它,而不是在列表中使用decimal@S.Petrosov啊,是的,请注意还有Math.Round(dec,middpointrounding.ToEven)
选项。@BrendanGooden-这个答案没有给出您想要的结果。它需要Decimal.Round(y,2)
@Enigmativity correct我已经学会了,但是谢谢:)