delphi中的常用數學函數 與 十六進制轉成float

問:代碼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位轉換出錯


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章