C# 最小有效数字数

标签 c# c#-4.0

我正在尝试进行一些数字格式化,并且正在寻找一种优雅的方式来格式化列表中的数字。作为示例,这是我的列表:

List<double> list =
   new List<double>(new double[] {34.8, 35.0, 35.7, 35.9, 38.0});

如果我使用 list.ForEach(x => Console.WriteLine(x.ToString("#"))) 打印这些,我得到:

35
35
36
36
38

这不完全正确。我想显示最少数量的有效数字以确保每个结果都是唯一的(假设没有重复)。因此,对于上面的内容,格式字符串将是“#.#”,以便我得到一位小数。

如果这些是数字:{35, 37, 40, 41, 42} 我不想使用“#.#”我想使用“#”因为我不想不想在无关紧要的情况下打印出“.0”来浪费空间。

我只非常担心小数点左边的数字。

这是我编写的代码,但我希望有更优雅的方法来执行此操作。我基本上是在尝试优化它:

bool unique = false;
string format = "#."
List<string> strings = new List<string>();

while (!unique)
{
   strings = List.Select(x => x.ToString(format)).Distinct().ToList();

   if (strings.Count() == list.County())
   {
     unique = true;
   }
   else
   {
     format += "#";
   }
}

最佳答案

string format = "#.";
while (list.GroupBy(x => x.ToString(format))
           .Any(g => g.Count() > 1)
      ) {
    format += "#";
}

关于C# 最小有效数字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834391/

相关文章:

c# - RavenDB EsentOutOfLongValueIDsException 异常

c# - 使用 wpf 应用程序读取条形码

asp.net-mvc-3 - MVC 3、单选按钮和模型

asp.net-mvc-3 - 将图像转换为字节[]

c# - JSON序列化之间的区别

c# - 我无法正确计算这个简单的计算

c#-4.0 - NHIBERNATE WHERE 和 IQUERYOVER 的多个 OR 子句

asp.net-mvc - 对 HttpModule 中的事件进行单元测试

c# - 将 blob 字符串转换为 jpg 文件

c# - NETCore.App WebSockets CancellationToken