使用 C# 降低数字数组精度的有效方法

Qua*_*nel 0 c# arrays precision

使用 C#,在不改变类型的情况下将浮点数数组的精度降低 n 位的有效方法是什么?

例子:

float[]{1.34, 2.22, 2.32, 7.71}
Run Code Online (Sandbox Code Playgroud)

变成

float[]{1.00, 2.00, 2.00, 8.00}
Run Code Online (Sandbox Code Playgroud)

或者

float[]{1.30, 2.20, 2.30, 7.70}
Run Code Online (Sandbox Code Playgroud)

the*_*mee 5

var array = new float[]{1.34f, 2.22f, 2.32f, 7.71f};

for (int i = 0; i < array.Length; i++) {
    array[i] = MathF.Round(array[i], 1); // the second argument is the number of digits after the dot
}
Run Code Online (Sandbox Code Playgroud)

这将修改现有的数组,结果将是float[]{1.30f, 2.20f, 2.30f, 7.70f}

如果你想创建一个新数组:

var array = new float[]{1.34f, 2.22f, 2.32f, 7.71f};
var roundedArray = array.Select(x => MathF.Round(x, 1)).ToArray(); // or .ToList()
Run Code Online (Sandbox Code Playgroud)