Delphi Math里的基本函数,以及浮点数比较函数(转)

源:Delphi Math里的基本函数,以及浮点数比较函数

Delphi里的好东西太多,多到让人觉得烦。这种感觉就是当年打游戏《英雄无敌3》,改了钱以后,有钱了每天都要造建筑,明明是好事,可是让人觉得烦。

先记录下来,以后再回来加强对Math单元的研究,不必再自己发明函数去比较浮点数了~

1.Ceil

function Ceil(const X: Extended):Integer;:按正无穷大方向四舍五入一个变量。例如:

Ceil(-2.8) = -2;
Ceil(2.8) = 3;
Ceil(-1.0) = -1;  

3.Floor

function Floor(const X: Extended): Integer;:按负无穷方向四舍五入一个变量。例如:

Floor(-2.8) = -3;
Floor(2.8) = 2;
Floor(-1.0) = -1; 

3. CompareValue

function CompareValue(const A, B: Integer): TValueRelationship; overload;

function CompareValue(const A, B: Int64): TValueRelationship; overload;

function CompareValue(const A, B: Single; Epsilon: Single = 0): TValueRelationship; overload;

function CompareValue(const A, B: Double; Epsilon: Double = 0): TValueRelationship; overload;

function CompareValue(const A, B: Extended; Epsilon: Extended = 0): TValueRelationship; overload;

比较A、B两个变量的关系。如果A<B,则返回值为-1;如果A=B,则返回值为0;如果A>B,则返回值为1;其中A、B只能为Integer、Int64、Single、Double、Extended表达式。

4. EnsureRange

function EnsureRange(const AValue, AMin, AMax: Integer): Integer; overload;

function EnsureRange(const AValue, AMin, AMax: Int64): Int64; overload;

function EnsureRange(const AValue, AMin, AMax: Double): Double; overload;

返回确保在某一范围内的值。如果AValue<AMin,则返回AMin;如果AValue>AMax,则返回AMax;其返回值只能为Integer、Int64、Double类型的值。

5. InRange

function InRange(const AValue, AMin, AMax: Integer): Boolean; overload;

function InRange(const AValue, AMin, AMax: Int64): Boolean; overload;

function InRange(const AValue, AMin, AMax: Double): Boolean; overload;

用来判断一个数是否在某一范围内。如AMin<=AValue<=AMax,则返回True;否则则返回False。

6. Max、Min

Max

function Max(A,B: Integer): Integer; overload;

function Max(A,B: Int64): Int64; overload;

function Max(A,B: Single): Single; overload;

function Max(A,B: Double): Double; overload;

function Max(A,B: Extended): Extended; overload;

比较两个数字表达式返回其中的较大者。其中A、B的类型为Integer、Int64、Single、Double、Extended中的一类。

Min

function Min(A,B: Integer): Integer; overload;

function Min(A,B: Int64): Int64; overload;

function Min(A,B: Single): Single; overload;

function Min(A,B: Double): Double; overload;

function Min(A,B: Extended): Extended; overload;

比较两个数字表达式返回其中的较小者。其中A、B的类型为Integer、Int64、Single、Double、Extended中的一类。

7. Power、Round、RoundTo

Power

function Power(const Base, Exponent: Extended): Extended;:返回底数的任何次幂。其中base是底数,Exponent是指数。

Round

function Round(X: Extended): Int64;:将实数四舍五入为整数。

RoundTo

type TRoundToRange = -37..37;

function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;:将实数按指定的ADigit来进行四舍五入。

RoundTo(1234567,3) = 1234000;
RoundTo(1.234,-2) = 1.23;
RoundTo(1.235,-2) = 1.24;  

8.Trunc

function Trunc(X: Extended): Int64;:返回一个函数的整数部分。与Int函数相似。

以上介绍的几个函数在Math类中比较常用。

参考:

http://blog.csdn.net/kimifdw/article/details/8582725

时间: 2024-11-05 02:33:25

Delphi Math里的基本函数,以及浮点数比较函数(转)的相关文章

Delphi Math单元函数

这个单元包含高性能的算术.三角.对数.统计和金融方面的计算及FPU程序函数用于补充Delphi语言System.pas 单元中的数学常规程序函数注意1) 对于有些函数,这个单元中涉及的概念或常数由Earl F. Glynn (www.efg2.com) 和 Ray Lischner (www.tempest-sw.com)提供.2) 所有的角度参数三角函数的结果都用弧度表示3) 下列大部分的三角和对数程序直接的映射到Intel 80387 FPU4) 浮点机指令.输入域.输出范围和错误处理主要由

Delphi 2010 里公开的 Midas.dll 的源代码!!Delphi 2010 V14.0.3449.21988 的Midas.dll 修正了上一版本的大BUG!

源代码是用C++ Builder写的. 下载: http://files.cnblogs.com/AnyDelphi/Midas_Source.rar http://www.cnblogs.com/AnyDelphi/archive/2009/08/13/1545175.html#2264357 上一版本的Midas.dll Delphi 2007编译的程序如果是用Delphi 2010的Midas.dll是会出错的. 这一版就不会了. http://www.cnblogs.com/AnyDel

delphi编程里bool跟boolean类型的区别

原文来自: http://blog.csdn.net/shao9900/article/details/44000825 bool是LongBool类型. Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool.后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用Boolean类型. 这四种类型的布尔值占用内存的数量如下: Boolean 1 Byte ByteBool 1 Byte WordBool 2 Bytes(1 Word) L

delphi编程里的bool跟boolean类型有什么区别

bool是LongBool类型. Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool.后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用Boolean类型.这四种类型的布尔值占用内存的数量如下:Boolean 1 ByteByteBool 1 ByteWordBool 2 Bytes(1 Word)LongBool 4 Bytes(2 Words)对于ByteBool,WordBool和LongBool三种类型True常量的值为非

Delphi 7 里没有加载的控件

在原来版本如D5.D6中使用的控件如Quickrep,FastNet等,在D7中仍然是保留的.只是Delphi没有将他们默认的安装到组件面版中来.这些控件包全部保存在Delphi目录的bin下,文件扩展名为.bpl(共将近60个).安装这些包的方法很简单,只需点击菜单"component---->Install Packages...",然后使用"ADD"选择需要的包就可以了. 下面就其中的一部分bpl列表说明其中的控件: dclact70.bpl (Borl

Delphi XE里的StrPas要注意哦(要让StrPas知道哪里是字符串结束)

废话不多说了,直接上例子解说: procedure TForm1.Button1Click(Sender: TObject);var  aa: array[0..1]of AnsiChar;  bb1: string;begin  aa[0] := AnsiChar('1');  aa[1] := AnsiChar('2'); bb1 := StrPas(aa);  ShowMessage(bb1);    //这里显示不正确end; procedure TForm1.Button1Click(

delphi 7里怎么隐藏PageControl控件的tabsheet标签

Tabsheet1.tabvisible := False; 原文地址:https://www.cnblogs.com/linjincheng/p/10212560.html

String[255]在高版本Delphi里还是被解释成Byte,总体长度256,使用StrPCopy可以给Array String拷贝字符串

学了好多不了解的知识: procedure TForm1.Button1Click(Sender: TObject); var s1 : String; s2 : String[255]; begin s1:='ç1很好'; ShowMessage(s1); // 这里显示正常 s2:=s1; ShowMessage(s2); // 这里显示乱码. // 问这个问题的原因是,在一个recode pack 里定义了String[255],但是使用Unicode字符给它赋值的时候,就乱码了,这该怎么

js float浮点数计算精度问题

/** * floatObj 包含加减乘除四个方法,能确保浮点数运算不丢失精度 * * 我们知道计算机编程语言里浮点数计算会存在精度丢失问题(或称舍入误差),其根本原因是二进制和实现位数限制有些数无法有限表示 * 以下是十进制小数对应的二进制表示 * 0.1 >> 0.0001 1001 1001 1001…(1001无限循环) * 0.2 >> 0.0011 0011 0011 0011…(0011无限循环) * 计算机里每种数据类型的存储是一个有限宽度,比如 JavaScrip