转换或算术操作溢出(Overflow in conversion or arithmetic operation),咋办?(10)

  • 主题发起人 主题发起人 cnhotel
  • 开始时间 开始时间
C

cnhotel

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);var IptoNum:Int64;begin IptoNum:=256*256*256*256end;编译不通过,提示"E2099 Overflow in conversion or arithmetic operation"请问应该定义啥类型?
 
定义成real类型或者double类型试试。
 
real类型或者double这两个类型试过了,一样的提示.
 
256*256*256*256=4294967296 用showmessage(inttostr(4294967296))可以显示用showmessage(inttostr(256*256*256*256))就出错了不解.
 
那就分步计算吧,先计算256*256.再将结果计算一次。
 
应该是BUG吧
 
确实只能分步计算. IptoNum:=256*256; IptoNum:=IptoNum*256*256;这样就可以计算出256*256*256*256的值了不知道究竟是什么原因导致不能这样连乘的..
 
直接连乘,超出数据范围了。用showmessage能显示,是因为被转换成string型了。string和int的范围相差很大。
 
后退
顶部