如何在C#中返回包含十进制数的双数组



这是我的第一个问题,所以我希望我能正确解释;-(

我需要创建一个方法,它接受一个双数组,数字,并返回一个包含每个元素的平方的新数组。(如有任何帮助和指导,我们将不胜感激。谢谢!(

我得到的参数如下:

<param name="numbers">Input array</param>
<returns>double array</returns>
public double[] PowerArray(double[] numbers)

这是我到目前为止写的内容,但它返回的是双数字。我需要返回包含十进制数字。

{
double[] PowerArray = Array.ConvertAll(numbers, i => i * i);
return PowerArray;
}

我的指示是按照这个例子返回我的答案:double[]input={-2.2,0,1.1,3}应该返回double[][4.84,0,1.21。9] 。我的报税表给了我双倍的[][4840000001,01200000000000002,9]。

您正在触及浮点数学的基本性质。浮点数是近似值。您不需要近似值,因此不适合使用此数据类型。

相反,使用decimal来执行数学运算。然后,如果您真的需要,您可以将结果投射回double

using System.Linq;
// ...
public double[] PowerArray(double[] numbers)
{
return numbers
.Select(x => (decimal)x) // convert the element to a decimal
.Select(x => x * x) // perform decimal-level multiplication
.Select(x => (double)x) // convert the result back to a double
.ToArray();
}

最新更新