var
 f:double;
 s:string;
 e:integer;
begin
 e:=29        //////注意这里只能最大到29,如果再大,就溢出开始循环!!!!!
 f:=2 shl e;
 if f>2 then
 begin
    s:=floattostr(f);
    edit1.Text:=s;
 end;
end;
但是在VB中,Private Sub Command1_Click()
Dim f
f = 2 ^ 310
Text1.Text = f
End Sub
f也是Double类型,数值范围却可以!!!!
大家讨论,应该如何处理呢??????

解决方案 »

  1.   

    Double 的数值范围是5.0 x 10^?24 .. 1.7 x 10^308
      

  2.   

    Double 的数值范围是5.0 x 10^-324 .. 1.7 x 10^308
      

  3.   

    delphi  double为64位
    你这句话是啥子意思?>var
    > e:integer;
    >e:=29        //////注意这里只能最大到29,如果再大,就溢出开始循环!!!!!?????
      

  4.   

    var
     fff : double;
     ddd : int64;
     s:string;
     e:integer;
    begin
     e := 60;
     ddd := 2;
     fff := ddd shl e;
     if fff > 2 then
     begin
        s := floattostr(fff);
        edit1.Text:=s;
     end;
    end;因为f:=2 shl e;问题不是f 而于2,DELPHI 编译器认为2为integer,而integer是有符32整型