您的位置:首页 > 编程语言 > Delphi

delphi中的常用数学函数 与 十六进制转成float

2013-12-25 12:45 302 查看
问:代码x:=power(y,2);
却提示这个Undeclared identifier: 'power'
为什么?


答:引用单元math

原文地址:http://www.cnblogs.com/doorsky/archive/2011/04/10/2011211.html

delphi中的常用数学函数

定义:function Power(X,Y): (Same type as parameter);

说明:X可以是整型,也可以是实型;返回值实型例子:

var

i:integer;

begin

i := Power(3,4); { 81}

end.

求绝对值函数abs(x)

定义:function Abs(X): (Same type as parameter);

说明:X可以是整型,也可以是实型;返回值和X的类型一致例子:

var

r: Real;

i: Integer;

begin

r := Abs(-2.3); { 2.3 }

i := Abs(-157); { 157 }

end.

取整函数int(x)

定义:function Int(X: Real): Real; 注意:X是实型数,返回值也是实型的;返回的是X的整数部分,也就是说,X被截尾了(而不是四舍五入)例子:

var R: Real;

begin

R := Int(123.567); { 123.0 }

R := Int(-123.456); { -123.0 }

end.

截尾函数trunc(x)

定义:function Trunc(X: Real): Longint; 注意:X是实型表达式. Trunc 返回Longint型的X的整数部分例子:

begin

Writeln(1.4, ' becomes ', Trunc(1.4)); { 1 }

Writeln(1.5, ' becomes ', Trunc(1.5)); { 1 }

Writeln(-1.4, 'becomes ', Trunc(-1.4)); { -1 }

Writeln(-1.5, 'becomes ', Trunc(-1.5)); { -1 }

end.

四舍五入函数round(x)

定义:function Round(X: Real): Longint; 注意:X是实型表达式. Round 返回Longint型的X的四舍五入值.如果返回值超出了Longint的表示范围,则出错. 例子:

begin

Writeln(1.4, ' rounds to ', Round(1.4)); { 1 }

Writeln(1.5, ' rounds to ', Round(1.5)); { 2 }

Writeln(-1.4, 'rounds to ', Round(-1.4));{ -1 }

Writeln(-1.5, 'rounds to ', Round(-1.5));{ -2 }

end.

取小数函数frac(x)

定义:function Frac(X: Real): Real; 注意:X 是实型表达式. 结果返回 X 的小数部分; 也就是说,Frac(X) = X - Int(_X). 例子:

var

R: Real;

begin

R := Frac(123.456); { 0.456 }

R := Frac(-123.456); { -0.456 }

end.

求平方根函数sqrt(x)和平方函数sqr(x)

定义:

平方根:function Sqrt(X: Real): Real;

注意:X 是实型表达式. 返回实型的X的平方根. 平方:function Sqr(X): (Same type as parameter);

注意:X 是实型或整型表达式.返回值的类型和X的类型一致,大小是X的平方,即X*X.

例子:

begin

Writeln('5 squared is ', Sqr(5)); { 25 }

Writeln('The square root of 2 is ',Sqrt(2.0)); { 1.414 }

Pascal函数实例

标准数据类型的含义及符号

(1)整型数的取值范围:-32768<=n<=32768;整型运算操作:+、-、*、div、mod;整型关系操作:=、<>、>=、<=,结果为布尔型;有关整型的标准函数:

整型函数

函数名 函数值 例

前接函数 pred(x) x-1 pred(4)=3

后继函数 succ(x) x+1 succ(-3)=-2

绝对值函数abs(x) |x| abs(-1)=1

平方函数sqr(x) x^2 sqr(-5)=25

奇函数 odd(x) x为奇数时值为True odd(1)=true

x为偶数时值为False odd(16)=false

字符函数chr(x) 序号为x的ASCII字符 chr(65)=\'\'a\'\'

a对应的序号65

(2)实型数的绝对值取值范围:1E-38~1E+38;计算机实数的表示标准形式往往类如1.2E-8,-1234.56E+3等形式;实数范围比整数大,但实型数的运算速度比整形数慢,另外实型数在存储时会出现小的误差;

实型的运算操作:+、-、*、/。只要有一个运算对象是实型量,其运算结果总是实型量,即其可与整型量混合计算。

实型的关系操作;=、<>、>=、<=,结果为布尔型,即两种结果:true或false。

实型函数种类:

abs(x);

sqr(x);

sin(x)正弦函数,求数学三角正弦函数的值,如sin(1.570789)=0.99999,注意X值要以弧度作单位;

cos(x)余弦函数;

arctan(x)反正切函数;

ln(x)自然对数;

exp(x)指数函数;求ex的值。

Sqrt(x)平方根函数;如sqrt(1.44)=1.2

trunc(x)截尾函数;截去实数x的小数部分,保留整数,例:trunc(-3.3)=-3;

round(x)舍入函数;将实数x四舍五入得到最接近的整数,例;round(3.3)=3,round(-8.9)=-9;

注意:实型数据没有pred和succ函数。

(3)布尔型数据的值只有两个:false和true,前者序号为0,后者序号为1。布尔类型数据最少,但用途广泛,主要用于程序设计中的流程控制和逻辑判断。

布尔型数据可作如下运算操作:

not(逻辑非),and(逻辑与),or(逻辑与)。

布尔型的标准函数:

ORD(X) 序号函数,例:ORD(FALSE)=0,ORD(TRUE)=1;

RRED(X) 前趋函数,例:PRED(TRUE)=FALSE,但X的值为TRUE时,只有前接值,没有后趋值;

SUCC(X)后继函数,例:SUCC(FALSE)=TRUE,但X的值为FALSE时,只有后继值,没有前趋值;

EOF(X)和EOLN(X)文件结束函数,行结束函数,此处不予以讨论。

(4)字符型数据取值范围:ASCⅡ码表中的一部分,包含几十个大小写英文字母与数字及数字、各种符号(含空格),注意每个字符符号均有相应的序号,而序号可视为整型数,所以字符型与整型是可以转换的。

在PASCAL程序中,用单引号括起来的一个字符表视字符型数据,如\'\'A\'\',\'\'8\'\',\'\'+\'\',\'\' \'\',分别表示字母A,数字8,字符+和空格。注意整型或实型的8与字符型的8是有本质的区别的。

字符型数据不可直接进行运算操作+、-、*、/;

字符型数据可做如下关系操作:>,<,=,<>,<=,>=,运算结果是布尔类型的值,即TRUE或FALSE。

字符性的标准函数:

ORD(x) 求X的序号,例如:ORD(\'\'C\'\')=67;ORD(\'\'0\'\')=48;ORD(\'\'A\'\')=65;

ORD(\'\'A\'\')=97;

PRED(X) 求X的前接值,例如:PRED(\'\'6\'\')=\'\'5\'\';

SUCC(X) 求X的后续值,例如:SUCC(\'\'6\'\')=\'\'7\'\'

CHR(X) 求序号为X的相应自负,是ORD的逆函数,例如:CHR(67)=\'\'C\'\';

CHR(ORD(\'\'X\'\')-1);

例如如下关系也成立;

ORD(\'\'9\'\')-ORD(\'\'1\'\')=57-49=8;

SUCC(X)=CHR(ORD(X)+1);如SUCC(\'\'B\'\')=CHR(ORD(\'\'B\'\')+1)=CHR(66+1)-C\'\';

PRED(X)=CHR(ORD(X)-1);如PRED( \'\'B\'\')=CHR(ORD(\'\'B\'\')-1)=CHR(66-1)=\'\'A\'\'

示例程序:

原文地址:http://blog.csdn.net/fjw8205/article/details/2830300

{字符串转换成16进制字符串}
function StrToHexStr(const S:string):string;//字符串转换成16进制字符串
var
I:Integer;
begin
for I:=1 to Length(S) do
begin
if I=1 then
Result:=IntToHex(Ord(S[1]),2)
else Result:=Result+' '+IntToHex(Ord(S[I]),2);
end;
end;

{十进制 to 二进制}
function IntToBin(Value: LongInt;Size: Integer): String;
var
i: Integer;
begin
Result:='';
for i:=Size-1 downto 0 do begin
if Value and (1 shl i)<>0 then begin
Result:=Result+'1';
end else begin
Result:=Result+'0';
end;
end;
end;

{二进制 to 十进制}
function BintoInt(Value: String): LongInt;
var
i,Size: Integer;
begin
Result:=0;
Size:=Length(Value);
for i:=Size downto 1 do
begin
if Copy(Value,i,1)='1' then
Result:=Result+(1 shl (Size-i));
end;
end;

function floatBintoInt(Value: String): real;
var
i,Size: Integer;
begin
Result:=0;
Size:=Length(Value);
for i:=Size downto 1 do
begin
if Copy(Value,i,1)='1' then
Result:=Result+1/(1 shl i);
end;
end;

{十六进制 to 二进制}
function HextoBinary(Hex:string):string;
const
BOX: array [0..15] of string =
('0000','0001','0010','0011',
'0100','0101','0110','0111',
'1000','1001','1010','1011',
'1100','1101','1110','1111');
var
i:integer;
begin
for i:=Length(Hex) downto 1 do
Result:=BOX[StrToInt('$'+Hex[i])]+Result;
end;

{十六进制 to 十进制 浮点型}
function HextoFloat(s:string):real;
var
b,temp:string;
e:integer;
f:real;
begin
b:=HextoBinary(s);
temp := copy(b,2,8);
e:=BintoInt(temp)-127;
temp := copy(b,10,23);
f := 1+floatBintoInt(temp);
if(copy(b,1,1)='0')then
result := power(2,e)*f //------------------------------------------------要引用单元math
else
result :=-power(2,e)*f;
end;


eg:十六进制浮点数如C1480000,转成十成制数-12.5

-Hexadecimal floating-point numbers, such as C1480000, turn into Kazunari system for a few-12.5

http://hi.baidu.com/endlesslove137/item/cc847d7239c7dc14d0dcb38e


delphi val()

在这里Val和iif都是你所用的数据库中的函数

在delphi中Val是一个将字符串转换为数字的函数,

Val(S; var V; var Code: Integer)第一个参数是要转换的字符串,第二个参数存放转换后的数字,可以是整数或浮点数,第三个参数存放出错的字符索引值,例如:

Var

V, Code: Integer;

begin

Val('123.445',V,Code);

end;

转换后: V = 123, Code = 4,表示字符串'123.445'转换为整数是123,在字符串第4位转换出错

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delphi