procedure TForm1.btn1Click(Sender: TObject);
var
 intX1,intX2,intX:Int64;
 intA,intB,intC,intD:Int64;
begin
  intA:=256*256;
  intB:=256*256;
  intC:=256*256;
  intD:=256*255;
  intX1:=intA*intB;
  intX2:=intC*intD;
  intX:=intX1*intX2;
  showmessage(inttostr(intX)) ;
end;

解决方案 »

  1.   

    结果超64位最大正整数上限了,就变成负数
    请用double类型
      

  2.   

    Int64:是Delphi中最大的整数,64位有符号整数
    type Int64 = -9223372036854775808..9223372036854775807;
    当数据越界时( >9223372036854775807)时,仅保留后64位数据,造成假值现象。你的IntX值远远大于9223372036854775807,越界的结果就是一个负数的假象。
      

  3.   

    值太大了,换成Double也没用
      

  4.   

     sssssd
    应该是 7个256,1个128,才是2^63次7个256,1个128   显示也是负数
      

  5.   

    该数值 176892884410642042440,
    大于Int64的最大数 9223372036854775807。
      

  6.   


    应该是 7个256,1个128,才是2^63次7个256,1个128   显示也是负数
    2^63-1才是最大的整数
    多1,就成了负数delphi中最大正整数应该是2^32-1吧
      

  7.   

    搞错了
    delphi中最大正整数应该是2^63-1
      

  8.   

    delphi中如何表示 大于 9223372036854775807 即  2^63-1  的数?
      

  9.   


    自己或第三方实现的 任意位数 大整数 类。好像go还是python倒是自带了,可能是后者
      

  10.   

    编译中,大于 2^63-1 的整数,可以通过String字符类型,以字符形式保存在数据库。或者两个字段分别保存:A字段保存整数的10^18整数,B字段保存10^19以上的整数。 
      

  11.   

    UIntToStr
      

  12.   

    用uint64