c# - 在 C# 中,如何按尾数对 double 列表进行排序?

标签 c# .net linq

如何按 double 的小数部分对 double 列表进行排序。
例如: 对于输入 <1.2, 2.3, 1.12, 5.1> , 排序后输出 应该是 <5.1, 1.12, 1.2, 2.3>

最佳答案

您可以通过 OrderBy()Math.Truncate() 方法实现,如下所示。 x-Math.Truncate(x) 为您提供小数点后的数字,OrderBy 将按升序排列它们。看看这个example并尝试使用以下代码片段

 List<double> input = new List<double>(){1.2, 2.3, 1.12, 5.1};
 input = input.OrderBy(x=>x-Math.Truncate(x)).ToList();
 Console.WriteLine(String.Join("\n",input));

或者您也可以尝试使用 .OrderBy(x=>x-(int)x) 而不是 OrderBy(x=>x-Math.Truncate(x)

关于c# - 在 C# 中,如何按尾数对 double 列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44015292/

相关文章:

c# - 如何验证asp.net mvc OWIN从azure AD B2C收到的id_token

C# - 验证基于 int 的 DateTime 没有异常?

c# - MVC6 自定义 IModelBinder,Beta8 变了?

c# - 动态修改时未更新 Datagridview 单元格值

c# - 如何使用带有 List<MyStructure> 的 LINQ 投影来获取 NameValueCollection?

c# - linq - 在 Any() 调用中使用来自父对象的属性

c# - 从 mysql 查询中读取 PHP 数组作为 C# 中的字符串

c# - 使用 object.Equals 比较两个 float[] 数组元素是否相等

.net - HTTP 错误 403.14 - 禁止 - MVC4 .net 4.5 包

c# - 如何在 LINQ 中进行 STAR 搜索