c# - 对 double 组中的所有元素进行四舍五入

标签 c# arrays

我需要帮助尝试弄清楚如何将 double 组中的所有元素四舍五入到小数点后 4 位。我想我需要使用 Array.ForEach 语句或 foreach 语句,但我似乎无法获得正确的语法。

数组有如下数字(x/y 坐标):

"0;24;5.99753782108473;21.770136316906;8.32805512530786;19.3909999184418"

这些来自 Autocad,长度最多可达 15 位小数。对于我想要做的事情,我只需要 1/16"的精度,这样我就可以将其四舍五入到小数点后 4 位,而不会造成任何影响。

目前,我在需要时使用 Math.Round(d1,4) 对值进行四舍五入 - d1 是数组名称。不过我认为立即舍入整个数组会“更干净”

最佳答案

如果您需要 1/16 的精度,请将您的数字乘以 16,四舍五入,然后除以 16。由于 16 是 2 的幂,因此 double 将提供精确的表示其中。

要一次性转换整个数组,请使用 LINQ:首先,为每个项目选择新值,然后将结果转换回数组,如下所示:

d1 = d1.Select(d => Math.Round(d*16) / 16).ToArray();

您需要使用System.Linq才能编译。

关于c# - 对 double 组中的所有元素进行四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687871/

相关文章:

c# - NBuilder - 创建嵌套对象时出现问题

arrays - 快速存储对数组的引用

ios - 如何将 C int 放入 NSArray?

javascript - 如何使用 jQuery 获取数组键名?

javascript - 将对象转换为数组 - 维护命名键

c# - WPF 窗口在 ListBox 项双击事件处理程序中弹出后失去焦点

javascript - 如何使用 JavaScript 访问 C# dll

c# - Unity DependencyAttribute 适用于 Controller 但不适用于 FilterAttribute

c# - 在对象 C# 中查找值的最佳方法

javascript - 如何仅从 JavaScript 过滤器方法中获取前 100 个对象