查找动态数组平均值的最简单方法

del*_*sql 1 delphi dynamic-arrays

我创建了一个动态数组,并将值传递给它.是否有找到动态数组平均值的快捷方式.

var
  TheMin, TheMax: Integer;  
  x: array of Integer; //Dynamic array declaration
....
TheMin := MinIntValue(x);//I am able to retrieve the minium value of the dynamic array
TheMax := MaxIntValue(x);//I am able to retrieve the maximum value of the dynamic array 
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以使用数学库.

Dav*_*nan 6

编写这样的函数非常容易.

function Mean(const Data: array of Integer): Double; overload;
var
  i: Integer;
begin
  Result := 0.0;
  for i := low(Data) to high(Data) do
    Result := Result + Data[i];
  Result := Result / Length(Data);
end;
Run Code Online (Sandbox Code Playgroud)

我重载了它,以便它可以与Math单元中相同的命名函数并排放置.

如果您希望使用内置库代码,可以使用SumIntMath单元:

TheMean := SumInt(x) / Length(x);
Run Code Online (Sandbox Code Playgroud)

SumInt使用Integer累加器执行求和.这可能比使用浮点累加器的定制函数更快.但是,Integer累加器可能会溢出,这可能是令人反感的.另一方面,Integer累加器可能比浮点累加器更准确.根据您的使用要求,这些问题可能对您很重要.

在麻烦的情况下,如果输入数组的长度为零,则将引发运行时浮点除以零的错误.