pow(2,39) 附近的数字怎么可能对于 64 位整数值来说太大了呢?
How can a number, around pow(2,39), be too large for a 64-bit integer value?
我正在使用 Progress-4GL,11.6 版,appBuilder 和过程编辑器。
我有一个值为“1000000000000”的字符串,我想将其转换为整数。
首先我尝试使用简单的转换来做到这一点,但这没有用:
Result = INT(value). => runtime error 15747.
由于提到的值大约是 2^39
并且 INT
似乎用于 32 位值,这似乎是正确的。
因此,我决定使用更大的数据类型 INT64
,但这似乎给出了相同的错误消息:
Result = INT64(value). => again runtime 15747.
这怎么可能?一个 64 位整数怎么可能不能保持 2^39
左右的值?
哦,如果你想知道我创建的是 32 位还是 64 位应用程序,我不知道,我如何从过程中知道 editor/appBuilder?
ABL INT64 不依赖于 Progress 运行时(32 位或 64 位)的进程架构。 AVM 隐藏了这些细节。 ABL INT64 可以容纳从 -9223372036854775808 到 9223372036854775807
这里的效果很好。我什至加了几个零。
DEFINE VARIABLE i AS INT64 NO-UNDO.
ETIME (YES) .
i = INT64 ("1000000000000") .
MESSAGE "time" ETIME SKIP
"i" i
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
ETIME (YES) .
i = INT64 ("100000000000000000") .
MESSAGE "time" ETIME SKIP
"i" i
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
您的变量 Result 定义为 INTEGER 还是 INT64?
我正在使用 Progress-4GL,11.6 版,appBuilder 和过程编辑器。
我有一个值为“1000000000000”的字符串,我想将其转换为整数。
首先我尝试使用简单的转换来做到这一点,但这没有用:
Result = INT(value). => runtime error 15747.
由于提到的值大约是 2^39
并且 INT
似乎用于 32 位值,这似乎是正确的。
因此,我决定使用更大的数据类型 INT64
,但这似乎给出了相同的错误消息:
Result = INT64(value). => again runtime 15747.
这怎么可能?一个 64 位整数怎么可能不能保持 2^39
左右的值?
哦,如果你想知道我创建的是 32 位还是 64 位应用程序,我不知道,我如何从过程中知道 editor/appBuilder?
ABL INT64 不依赖于 Progress 运行时(32 位或 64 位)的进程架构。 AVM 隐藏了这些细节。 ABL INT64 可以容纳从 -9223372036854775808 到 9223372036854775807
这里的效果很好。我什至加了几个零。
DEFINE VARIABLE i AS INT64 NO-UNDO.
ETIME (YES) .
i = INT64 ("1000000000000") .
MESSAGE "time" ETIME SKIP
"i" i
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
ETIME (YES) .
i = INT64 ("100000000000000000") .
MESSAGE "time" ETIME SKIP
"i" i
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
您的变量 Result 定义为 INTEGER 还是 INT64?