Delphi中,什么数据类型这样赋值才合法:LongNum:=797448960*27??(50分)

  • 主题发起人 主题发起人 SevenOrient
  • 开始时间 开始时间
S

SevenOrient

Unregistered / Unconfirmed
GUEST, unregistred user!
在C,Java中,Long数据类型就可以。
在Delphi中,我定义了int64,Longint,Real....都不行。我是这样定义的:
var LongNum:int64
............Longint
Real
begin
LongNum:=797448960*27;//错误提示:[Error] Unit1.pas(29): Overflow in conversion or arithmetic operation
end;
 
老兄,delphi中最大的值为2147483648,你的结果大于这个了,当然不行。
你换成×25就可以了。
 
没有直接办法,算了吧。
 
//以下语句运行通过,而且a和b还可以更大
var
LongNum:extended;
a:int64;
b:int64;
begin
a:=797448960;
b:=27;
LongNum:=a*b;
showmessage(floattostr(longnum));
end;
 
LongNum:=int64(797448960)*27;//这样就可以了!
 
LongNum:=797448960;
LongNum:=LongNum*27;
delphi会做优化,会对797448960*27预先计算,所以数字过大了。
 
其实我是写了如此函数(求组合熟),调试成功:散分

function Combin(m, n: integer):Extended;
var FenZi,FenMu:extended;
i:integer;
begin
Fenzi:= 1;
Fenmu:= 1;
for i:=0 to n-1 do begin
Fenzi:=Fenzi*(m-i);
Fenmu:=Fenmu*(n-i);
end;
Result:=(Fenzi/Fenmu);
end;
 
多人接受答案了。
 
后退
顶部