Math 中常用的数学函数

来源:互联网 发布:dedecms 5.7 php版本 编辑:程序博客网 时间:2024/05/16 07:45

 

//整除与余数: DivMod
const
  a = 11;
  b = 3;
var
  x,y: Word;
begin
  ShowMessage(IntToStr(a div b)); {整除得 3}
  ShowMessage(IntToStr(a mod b)); {余数 2}

  DivMod(a,b,x,y);
  ShowMessage(IntToStr(x)); {3}
  ShowMessage(IntToStr(y)); {2}
end;




//返回整数: Ceil、Floor
var
  d1,d2: Real;
const
  d = 1.2;
begin
  {向大补入}
  d1 := Ceil(d);
  d2 := Ceil(-d);
  ShowMessage(FloatToStr(d1)); {2}
  ShowMessage(FloatToStr(d2)); {-1}

  {向小舍入}
  d1 := Floor(d);
  d2 := Floor(-d);
  ShowMessage(FloatToStr(d1)); {1}
  ShowMessage(FloatToStr(d2)); {-2}
end;




//最大值与最小值: Max、Min
var
  d: Real;
begin
  d := Max(5.2, -2);
  ShowMessage(FloatToStr(d)); {5.2}

  d := Min(5.2, -2);
  ShowMessage(FloatToStr(d)); {-2}
end;




//Double 数组求和: Sum
var
  d: Real;
const
  arr: array[0..3] of Double = (1, 2, 3, -4.5);
begin
  d := Sum(arr); {要求必须是 Double 数组}
  ShowMessage(FloatToStr(d)); {1.5}
end;




//Double 数组求平均值: Mean
var
  arr: array[0..5] of Double;
  d: Double;
begin
  arr[0] :=  -1.2;
  arr[1] :=  1.0;
  arr[2] :=  2.5;
  arr[3] :=  3.0;
  arr[4] :=  4.5;
  arr[5] :=  25.0;

  d := Mean(arr);
  ShowMessage(FloatToStr(d)); {5.8}
end;




//计算一个数的 n 次方: Power
var
  d: Real;
begin
  d := Power(3,2);            {3 的 2 次方}
  ShowMessage(FloatToStr(d)); {9}
end;




//判断在一个误差范围内, 一个数字是否为0: IsZero
const
  d1 = 0.4;
  d2 = -0.1;
  d3 = 3;
var
  b: Boolean;
begin
  b := IsZero(d1, 0.4);      {参数2是误差范围}
  ShowMessage(BoolToStr(b)); {True}

  b := IsZero(d2, 0.4);
  ShowMessage(BoolToStr(b)); {True}

  b := IsZero(d3, 0.4);
  ShowMessage(BoolToStr(b)); {False}

  b := IsZero(d3);           {参数2是可选的, 默认是0}
  ShowMessage(BoolToStr(b)); {False}
end;




//比较两个参数在一定误差范围内是否相等: SameValue
var
  b: Boolean;
begin
  b := SameValue(1.2, 1.21, 0.01); {误差是 0.01}
  ShowMessage(BoolToStr(b));       {True}

  b := SameValue(1.2, 1.21);       {误差默认是 0}
  ShowMessage(BoolToStr(b));       {False}
end;




//判断一个数的正负
var
  v: TValueSign; {-1..1}
begin
  v := Sign(22);
  ShowMessage(IntToStr(v)); {返回 1 表示是正数}

  v := Sign(-22);
  ShowMessage(IntToStr(v)); {返回 -1 表示是负数}

  v := Sign(0);
  ShowMessage(IntToStr(v)); {返回 0 表示是 0}
end;




//舍入位数: RoundTo、SimpleRoundTo
var
  d: Real;
const
  d1 = 1234567;
  d2 = 1.234;
  d3 = 1.235;
  d4 = - 1.235;
begin
  d := RoundTo(d1,3);
  ShowMessage(FloatToStr(d)); {123500}
  d := RoundTo(d2,-2);
  ShowMessage(FloatToStr(d)); {1.23}
  d := RoundTo(d3,-2);
  ShowMessage(FloatToStr(d)); {1.24}
  d := RoundTo(d4,-2);
  ShowMessage(FloatToStr(d)); {-1.24}

  d := SimpleRoundTo(d1,3);
  ShowMessage(FloatToStr(d)); {123500}
  d := SimpleRoundTo(d2,-2);
  ShowMessage(FloatToStr(d)); {1.23}
  d := SimpleRoundTo(d3,-2);
  ShowMessage(FloatToStr(d)); {1.24}
  d := SimpleRoundTo(d4,-2);
  ShowMessage(FloatToStr(d)); {-1.24}

{RoundTo 使用银行家舍入法; SimpleRoundTo 使用不均衡算法舍入, 适合更大的值}
end;

原创粉丝点击