程序一直告诉我写的数字不是整数
Program keeps telling that number I wrote isn't integer
我做了一个程序,它不断告诉我输入的数字不是整数。
我正在输入 100010110101
,但弹出此错误:
代码:
procedure TForm1.Button1Click(Sender: TObject);
var
m,lo,cshl,cdhl,cjhl,csl,cdl,cjl:integer;
begin
m := StrToInt(Edit1.Text);
cshl := m div 100000000000;
cdhl := m div 10000000000 mod 10;
cjhl := m div 10000000000 mod 100;
csl := m div 1000000000 mod 1000;
cdl := m div 100000000 mod 10000;
cjl := m div 10000000 mod 100000;
lo := cjl + cdl * 10 + csl * 100 + cjhl * 1000 + cdhl * 10000 + cshl *100000;
ShowMessage(IntToStr(lo));
end;
考虑Delphi(以及大多数语言)如何处理 32 位整数:Wikipedia
在此上下文中,Integer
是一个 32 位整数,任何小于 -2,147,483,648
或大于 2,147,483,647
的值都不是有效的 32 位整数。
"common sense" 表示整数范围从 -∞
到 +∞
,但在计算机体系结构中并非如此。
如果您想 "cover" 更多值,请使用 Int64
。
在您的情况下,代码应如下所示:
var
m,lo,cshl,cdhl,cjhl,csl,cdl,cjl:Int64;
begin
m := StrToInt64(Edit1.Text);
...
end;
干杯
我做了一个程序,它不断告诉我输入的数字不是整数。
我正在输入 100010110101
,但弹出此错误:
代码:
procedure TForm1.Button1Click(Sender: TObject);
var
m,lo,cshl,cdhl,cjhl,csl,cdl,cjl:integer;
begin
m := StrToInt(Edit1.Text);
cshl := m div 100000000000;
cdhl := m div 10000000000 mod 10;
cjhl := m div 10000000000 mod 100;
csl := m div 1000000000 mod 1000;
cdl := m div 100000000 mod 10000;
cjl := m div 10000000 mod 100000;
lo := cjl + cdl * 10 + csl * 100 + cjhl * 1000 + cdhl * 10000 + cshl *100000;
ShowMessage(IntToStr(lo));
end;
考虑Delphi(以及大多数语言)如何处理 32 位整数:Wikipedia
在此上下文中,Integer
是一个 32 位整数,任何小于 -2,147,483,648
或大于 2,147,483,647
的值都不是有效的 32 位整数。
"common sense" 表示整数范围从 -∞
到 +∞
,但在计算机体系结构中并非如此。
如果您想 "cover" 更多值,请使用 Int64
。
在您的情况下,代码应如下所示:
var
m,lo,cshl,cdhl,cjhl,csl,cdl,cjl:Int64;
begin
m := StrToInt64(Edit1.Text);
...
end;
干杯