Math 中常用的数学函数

    技术2022-05-20  35

     

    //整除与余数: DivModconst  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、Floorvar  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、Minvar  d: Real;begin  d := Max(5.2, -2);  ShowMessage(FloatToStr(d)); {5.2}  d := Min(5.2, -2);  ShowMessage(FloatToStr(d)); {-2}end;


    //Double 数组求和: Sumvar  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 数组求平均值: Meanvar  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 次方: Powervar  d: Real;begin  d := Power(3,2);            {3 的 2 次方}  ShowMessage(FloatToStr(d)); {9}end;


    //判断在一个误差范围内, 一个数字是否为0: IsZeroconst  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;


    //比较两个参数在一定误差范围内是否相等: SameValuevar  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、SimpleRoundTovar  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;


    最新回复(0)