【问题标题】:How can I divide every element of my list by five and round the results?如何将列表中的每个元素除以五并将结果四舍五入?
【发布时间】:2014-03-09 00:28:52
【问题描述】:

我有一个名为“sum”的列表,其中包含 0、1、2、3、4 和 5 之间的整数值。我想创建另一个名为“average”的列表,其中包含通过将总和的每个元素相除的平均值按 5 列出并将结果添加到平均列表的相同元素中。

我的问题是我正在使用代码:

List<int> average = sum.Select(x => x/5).ToList();

但它并没有给我正确的结果,因为 C# 会自动决定如何将结果四舍五入为 0 或 1。但例如,当我将结果提供给 excel 时,它给了我不同的结果。 我需要手动获取总和列表的每个元素并将其除以 5,然后确定答案是否大于或等于 0.5,将其四舍五入为 1。如果结果小于 0.5,则将其四舍五入为 0。

【问题讨论】:

  • 您正在对“平均”的含义做出自己的定义。为什么?这只是额外的混乱。
  • 所以你想要一个只有 1 和 0 的结果列表?

标签: c# list


【解决方案1】:
List<int> average = sum.Select( x => (int)Math.Round(x/5.0) ).ToList();

但是,如果您真的想要项目的平均值:

int average = Math.Round( sum.Average() );

【讨论】:

  • Enumerable.Average 返回一个double
【解决方案2】:
var average = sum.Select(x => (int)(x / 5.0 + 0.5)).ToList();

或使用Math.Round:

var average = sum.Select(x => (int)Math.Round(x / 5.0)).ToList();

【讨论】:

    【解决方案3】:
    var average = sum.Select(x => (x / 5.0) >= 0.5 ? 1 : 0).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-19
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2013-06-05
      • 2023-03-30
      相关资源
      最近更新 更多